我有一个后缀+ dovecot与spamassassin在后缀端进行一些内容过滤。 问题是,在最近的更新中,最初可用的sendmail二进制文件被sendmail.postfix二进制文件取代。 这似乎与收件人信息有所不同。
以下是关于configuration的一些信息:
master.cf
<external ip>:submission inet n - - - - smtpd -o content_filter=spamassassin -o cleanup_service_name=pre-cleanup 127.0.0.1:smtp inet n - - - - smtpd [...] spamassassin unix - nn - - pipe flags=Rq user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
而稍微匿名的日志输出显示了实际的问题:
Feb 7 02:47:04 comu postfix/smtpd[25393]: connect from unknown[<my ip>] Feb 7 02:47:04 comu postfix/cleanup[25398]: C0A192C5816B: message-id=<[email protected]> Feb 7 02:47:04 comu postfix/qmgr[25384]: C0A192C5816B: from=<postmaster@domain>, size=259, nrcpt=1 (queue active) Feb 7 02:47:04 comu dovecot: lmtp(25400): Connect from local Feb 7 02:47:04 comu dovecot: auth: mysql: Connected to 127.0.0.1 (postfix) Feb 7 02:47:04 comu dovecot: lmtp(25400): Disconnect from local: Client quit Feb 7 02:47:04 comu postfix/lmtp[25399]: C0A192C5816B: to=<postmaster@domain>, orig_to=<admin@domain>, relay=smtp.domain[private/dovecot-lmtp], delay=0.04, delays=0.01/0.01/0/0.02, dsn=2.1.5, status=deliverable (250 2.1.5 OK) Feb 7 02:47:04 comu postfix/qmgr[25384]: C0A192C5816B: removed Feb 7 02:47:07 comu postfix/smtpd[25393]: C6E932C5816B: client=unknown[<my ip>] Feb 7 02:47:07 comu postfix/cleanup[25403]: C6E932C5816B: message-id=<[email protected]> Feb 7 02:47:07 comu postfix/qmgr[25384]: C6E932C5816B: from=<[email protected]>, size=697, nrcpt=1 (queue active) Feb 7 02:47:07 comu postfix/smtpd[25393]: disconnect from unknown[<my ip>] Feb 7 02:47:08 comu postfix/pipe[25404]: C6E932C5816B: to=<admin@domain>, relay=spamassassin, delay=3.5, delays=3.2/0.02/0/0.34, dsn=2.0.0, status=sent (delivered via spamassassin service) Feb 7 02:47:08 comu postfix/pickup[25383]: 3F49C2C58395: uid=505 from=<[email protected]> Feb 7 02:47:08 comu postfix/qmgr[25384]: C6E932C5816B: removed Feb 7 02:47:08 comu postfix/cleanup[25403]: 3F49C2C58395: message-id=<[email protected]> Feb 7 02:47:08 comu postfix/qmgr[25384]: 3F49C2C58395: from=<[email protected]>, size=1340, nrcpt=1 (queue active) Feb 7 02:47:08 comu dovecot: lmtp(25400): Connect from local Feb 7 02:47:08 comu postfix/lmtp[25399]: 3F49C2C58395: to=<admin@domain>, relay=smtp.domain[private/dovecot-lmtp], delay=0.08, delays=0.06/0/0/0.01, dsn=5.1.1, status=bounced (host smtp.domain[private/dovecot-lmtp] said: 550 5.1.1 <admin@domain> User doesn't exist: admin@domain (in reply to RCPT TO command)) Feb 7 02:47:08 comu dovecot: lmtp(25400): Disconnect from local: Client quit Feb 7 02:47:08 comu postfix/cleanup[25398]: 45B2F2C5816C: message-id=<[email protected]> Feb 7 02:47:08 comu postfix/qmgr[25384]: 45B2F2C5816C: from=<>, size=3192, nrcpt=1 (queue active) Feb 7 02:47:08 comu postfix/bounce[25408]: 3F49C2C58395: sender non-delivery notification: 45B2F2C5816C Feb 7 02:47:08 comu postfix/qmgr[25384]: 3F49C2C58395: removed Feb 7 02:47:08 comu postfix/smtp[25390]: 45B2F2C5816C: to=<[email protected]>, relay=none, delay=0.13, delays=0.01/0/0.12/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=silverline.local type=AAAA: Host not found) Feb 7 02:47:08 comu postfix/qmgr[25384]: 45B2F2C5816C: removed
当第一次收到电子邮件时,原始收件人(postmaster @ domain)parsing为实际收件人(admin @ domain),并且用dovecot检查该用户的存在。 这是好的,并返回一个成功。 然后通过内容filter发送电子邮件,该filter通过本地端口重新发送带有后缀的电子邮件。 但不是使用实际的收件人,而是现在的原始收件人,这当然不是在dovecot数据库中find的。
原始的sendmail二进制文件没有发生这种错误,这可能来自于sendmail项目。 我用master.cf中的pipe道尝试了各种标志,没有任何积极的结果。 我将不胜感激您的帮助。
我认为问题是正常的cleanup守护进程不会在您的filter注入邮件之后运行。 预清理通常不会进行地址重写和虚拟别名。
检查是否有-o cleanup_service_name=pre-cleanup SMTP侦听器从内容filter(通常10026 :)接收过滤的消息,如果这样删除它。