postfix 修改源码让其将收发邮件结果写到mysql里面

本文介绍如何在Postfix邮件系统中增加代码,将邮件日志信息记录到MySQL数据库,包括配置连接、插入数据及错误处理。

查看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 可以尝试下

转载于:https://my.oschina.net/hxily/blog/616433

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值