查看postfix源码收发邮件结束后写日志是在src\global\log_adhoc.c 最后的 msg_info 记录的,这样我们可以在该文件里面增加写mysql的代码
#include "mysql.h"
void logtosql(const char *qid, const char *sender, const char *recipient, const char *relay, const char *status, const char *reason)
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int flag;
char buf[512]={0};
mysql_init(&mysql);
if(!mysql_real_connect(&mysql, "localhost", "root", "password", "dbname", 0, NULL, 0)) {
msg_info("Failed to connect to Mysql!");
}
sprintf(buf,"insert into maillog(queued,sender,recipient,endtime,relay,status,result) values(\"%s\",\"%s\",\"%s\",now(),\"%s\",\"%s\",\"%s\")",qid,sender,recipient,relay,status,reason);
/*insert data ,if success return 0*/
flag = mysql_query(&mysql, buf);
if(flag) {
msg_info("sql: %s",buf);
msg_info("Insert data failure! %s",mysql_error(&mysql));
}
mysql_close(&mysql);
}
/* 在msg_info("%s", vstring_str(buf))后面添加 */
logtosql(id, sender, recipient->address, relay, status, dsn->reason);
注,如果提示找不到mysql.h 则拷贝一个到目录下 这边多了一个 const char *sender 参数.还有很多c文件里面的的函数也要添加,因为文件太多,这里不记录,可以修改后编译,编译不通过会提示,全部修改编译通过后安装即可. 另外在 http://blog.youkuaiyun.com/qidizi/article/details/8779769 可以尝试下
本文介绍如何在Postfix邮件系统中增加代码,将邮件日志信息记录到MySQL数据库,包括配置连接、插入数据及错误处理。

459

被折叠的 条评论
为什么被折叠?



