加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

将退回邮件记录到数据库(具有假造域/用户的Postfix)

发布时间:2021-01-12 08:00:57 所属栏目:编程 来源:网络整理
导读:我们有一个后缀安装,个中包括几个假造域,每个假造域都有假造用户.行使 mysql数据库映射这些域和用户.到今朝为止,我一向在通过理会后缀日记文件来跟踪反弹.我猜疑必需有更好,更有用的要领.我想到了三个,但我不确定什么是最好的: 编写Postfix内容过滤器,记录退

我们有一个后缀安装,个中包括几个假造域,每个假造域都有假造用户.行使 mysql数据库映射这些域和用户.到今朝为止,我一向在通过理会后缀日记文件来跟踪反弹.我猜疑必需有更好,更有用的要领.我想到了三个,但我不确定什么是最好的:

>编写Postfix内容过滤器,记录退回并扬弃邮件
>行使procmail – 但我不确定procmail怎样与没有界说$HOME的假造用户一路行使
>编写一个POP邮箱来自邮箱的剧本;理会并记录它们并删除退回的电子邮件

我但愿从维护的角度来看哪个最好,从生涯处事器资源的角度来看是有用的.感谢

办理要领

这统统都假定您要网络有关跳出的信息而不是退回的电子邮件自己:

我有与postfix,mysql和假造主机险些沟通的配置.从硬件资源角度来看,跟踪此题目的最有用要领是在执行时理会日记文件.可是假如你以为理会是怎样办理的,那么你可以行使像Logwatch这样的应用措施为你做全部的理会.然后配置Postfix为您丢弃退回的文件.

此刻,假如您确定要在某处网络这些电子邮件,可以在main.cf文件中行使这些配置:

bounce_notice_recipient = someone@nowhere.com
error_notice_recipient = someone@nowhere.com

假如您但愿完全烧毁电子邮件,可以添加假造用户并调解别名文件以将其发送到dev / null

someone: /dev/null

至于剧本和数据库,我此刻行使PHP和MySQL许多,以是假如我行使这些器材,我可以建设一些PHP代码来读取日记文件,查找跳出,然后将它们放到数据库中.然后我会在mail.log被截断之前运行代码.究竟上,在我写完它之后,我会在这里宣布代码.

这里有一些代码,假如你想用php / mysql运行它(我敢必定它也许更大度):

<?php
#parse_logs.php
# load local file into array
$val = file("mail.log");

$pattern = '/status=bounced/';

foreach ($val as &$value) {
if (preg_match($pattern,$value)) {
        $a = split('[<>]',$value);

       //if you prefer you can also use: preg_match_all('/<(.*)>/','$value',$matches);
       #can be helpful to print the following to the screen during tests
       # echo $a[1];

        // Make a MySQL Connection
        mysql_connect("localhost","username","password") or die(mysql_error());
        mysql_select_db("postfix_db") or die(mysql_error());

        // Insert a row of information into the table "example"
        mysql_query("INSERT INTO emails (emailaddress) VALUES('$a[1]') ") 
        or die(mysql_error());  

        #again,if you want to see while running manually from cli
        #echo "Data Inserted!";

}
#again,if you want to see while running manually from cli
#echo "n";
}

?>

然后,您可以在mail.log配置为接纳之前当即启动cron,可能在cron启动后破除日记.

好像必要耗费大量精神来跟踪退回电子邮件的电子邮件地点.您必要编写mysql查询然后才气会见此信息.

你也可以完全跳过mysql的对象,只需将功效转达给测试文件或电子邮件地点(也可以行使cron)

php parse.php > results.txt

要么

php parse_logs.php | /usr/sbin/sendmail someemailaddress@nowhere.com

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读