Search Postgresql Archives

Re: Email Verfication Regular Expression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well, I guess this could be a hard-expensive way to do it but I've done this little Stored Function, it doesn't use a regular expresion (you could pass your email first to one to check it out I guess).

#include "postgres.h"
#include "fmgr.h"
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>

PG_FUNCTION_INFO_V1(digmx);

Datum
digmx(PG_FUNCTION_ARGS)
{
int res;
char *name;
char answer[1024];
text *arg;

arg = PG_GETARG_TEXT_P(0);

res = res_init();
if(res != 0) {
 // Aki reporto un error
}
name = (char *) palloc(VARSIZE(arg)-VARHDRSZ);
strcpy(name, VARDATA(arg));

res = res_query(name, C_IN, T_MX, answer, sizeof(answer));

if(res == -1) {
 PG_RETURN_BOOL(false);
} else {
 // Aki imprimimos lo que debe escupir
 PG_RETURN_BOOL(true);
}
}

You can pass the domain to that function and It would check using resolv if the domains has an mx entry in the nameserver. I guess it is a little slow (it was not thinking to use it for speed, but I accept suggestions for it!) but I think it is enough easy and it could be usefull for somebody.

mydb# SELECT digmx('hotmail.com');
digmx
------
t
(1 row)

mydb# SELECT digmx('hotmail.co');
digmx
------
f
(1 row)

I know, it could be a very dumb to check the domain, but I consider myself as a totally newbie database/unix/programmer.

Thanks a lot!

PD: Please, I accept suggestion to improve this function.

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux