Postfix:通过sendmail二进制发送的邮件由于HELO错误而被阻塞

我的服务器正在使用Centos 6.5,我上周从Plesk 11.5更新到12,Postfix更新到2.8.17。 从那以后,使用sendmail二进制文件(通知,邮件转发…)发送的所有邮件都被一个错误的HELO主机名localhost拒绝。 似乎sendmail使用locahost作为HELO标签,这是不被接受的。

预先感谢您的帮助

这是以下错误:

Jun 23 14:23:20 ns395167 plesk sendmail[29817]: handlers_stderr: SKIP Jun 23 14:23:20 ns395167 plesk sendmail[29817]: SKIP during call 'check-quota' handler Jun 23 14:23:20 ns395167 postfix/pickup[29480]: B94BC6AA20A6: uid=0 from=<root@curuba.fr> Jun 23 14:23:20 ns395167 postfix/cleanup[29507]: B94BC6AA20A6: message-id=<20140623122320.B94BC6AA20A6@ns395167.ip-176-31-117.eu> Jun 23 14:23:20 ns395167 greylisting filter[29824]: Starting greylisting filter... Jun 23 14:23:20 ns395167 greylisting filter[29824]: Wrong HELO hostname: localhost Jun 23 14:23:20 ns395167 /usr/lib64/plesk-9.0/psa-pc-remote[29457]: handlers_stderr: REJECT Jun 23 14:23:20 ns395167 /usr/lib64/plesk-9.0/psa-pc-remote[29457]: REJECT during call 'grey' handler Jun 23 14:23:20 ns395167 /usr/lib64/plesk-9.0/psa-pc-remote[29457]: Message aborted. Jun 23 14:23:20 ns395167 postfix/cleanup[29507]: B94BC6AA20A6: milter-reject: DATA from localhost[127.0.0.1]: 5.7.1 Command rejected; from=<root@curuba.fr> to=<root@curuba.fr> Jun 23 14:23:20 ns395167 postfix/cleanup[29507]: B94BC6AA20A6: to=<root@localhost.localdomain>, orig_to=<root@curuba.fr>, relay=none, delay=0.12, delays=0.12/0/0/0, dsn=5.7.1, status=bounced (Command rejected) Jun 23 14:23:20 ns395167 postfix/cleanup[29502]: C594B6AA20A8: message-id=<20140623122320.C594B6AA20A8@ns395167.ip-176-31-117.eu> Jun 23 14:23:20 ns395167 postfix/bounce[29506]: B94BC6AA20A6: sender non-delivery notification: C594B6AA20A8 Jun 23 14:23:20 ns395167 postfix/qmgr[29481]: C594B6AA20A8: from=<>, size=2211, nrcpt=1 (queue active) Jun 23 14:23:20 ns395167 postfix/cleanup[29502]: CFFE56AA2094: message-id=<20140623122320.C594B6AA20A8@ns395167.ip-176-31-117.eu> Jun 23 14:23:20 ns395167 postfix/local[29721]: C594B6AA20A8: to=<root@localhost.localdomain>, orig_to=<root@curuba.fr>, relay=local, delay=0.08, delays=0.04/0/0/0.04, dsn=2.0.0, status=sent (forwarded as CFFE56AA2094) Jun 23 14:23:20 ns395167 postfix/qmgr[29481]: CFFE56AA2094: from=<>, size=2361, nrcpt=1 (queue active) Jun 23 14:23:20 ns395167 postfix/qmgr[29481]: C594B6AA20A8: removed Jun 23 14:23:20 ns395167 postfix-local[29825]: postfix-local: from=MAILER-DAEMON, to=admin@curuba.fr, dirname=/var/qmail/mailnames Jun 23 14:23:20 ns395167 postfix-local[29825]: Unable to get sender domain by sender mailname Jun 23 14:23:20 ns395167 dk_check[29826]: DK_STAT_NOSIG: No signature available in message Jun 23 14:23:20 ns395167 postfix-local[29825]: handlers_stderr: PASS Jun 23 14:23:20 ns395167 postfix-local[29825]: PASS during call 'dd52-domainkeys' handler Jun 23 14:23:20 ns395167 postfix/pipe[29508]: CFFE56AA2094: to=<admin@curuba.fr>, orig_to=<root@curuba.fr>, relay=plesk_virtual, delay=0.1, delays=0.04/0/0/0.06, dsn=2.0.0, status=sent (delivered via plesk_virtual service) Jun 23 14:23:20 ns395167 postfix/qmgr[29481]: CFFE56AA2094: removed 

这是我的postconf -n内容:

 alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases, hash:/var/spool/postfix/plesk/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 disable_vrfy_command = yes html_directory = no inet_interfaces = all inet_protocols = all mail_owner = postfix mailbox_size_limit = 0 mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man message_size_limit = 10240000 mydestination = localhost.$mydomain, localhost, localhost.localdomain myhostname = ns395167.ip-176-31-117.eu mynetworks = 127.0.0.0/8 [::1]/128 176.31.117.106/32 [2001:41d0:8:3c6a::1]/128, 50.57.69.12/32 newaliases_path = /usr/bin/newaliases.postfix non_smtpd_milters = inet:127.0.0.1:12768 unix:/var/spool/postfix/ctmilter/ctmilter.sock queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.8.17/README_FILES sample_directory = /usr/share/doc/postfix-2.8.17/samples sender_dependent_default_transport_maps = hash:/var/spool/postfix/plesk/sdd_transport_maps sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtp_send_xforward_command = yes smtp_tls_security_level = may smtp_use_tls = no smtpd_authorized_xforward_hosts = 127.0.0.0/8 [::1]/128 smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_rbl_client xbl.spamhaus.org, reject_rbl_client b.barracudacentral.org smtpd_milters = inet:127.0.0.1:12768 unix:/var/spool/postfix/ctmilter/ctmilter.sock smtpd_proxy_timeout = 3600s smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sender_restrictions = check_sender_access hash:/var/spool/postfix/plesk/blacklists, permit_sasl_authenticated smtpd_timeout = 3600s smtpd_tls_cert_file = /etc/postfix/postfix_default.pem smtpd_tls_key_file = $smtpd_tls_cert_file smtpd_tls_security_level = may smtpd_use_tls = yes transport_maps = , hash:/var/spool/postfix/plesk/transport unknown_local_recipient_reject_code = 550 virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual virtual_gid_maps = static:31 virtual_mailbox_base = /var/qmail/mailnames virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains virtual_mailbox_limit = 0 virtual_mailbox_maps = , hash:/var/spool/postfix/plesk/vmailbox virtual_transport = plesk_virtual virtual_uid_maps = static:30 

我的系统主机名似乎是正确的:主机名-f ns395167.ip-176-31-117.eu主机名ns395167.ip-176-31-117.eu

这些行为是Postfix的预期行为。 这里从官方文档的这个页面的片段。

使用Milter应用程序处理非SMTP邮件时,有一个小小的麻烦:没有SMTP会话。 为了保持Milter应用程序的快乐, Postfix cleanup(8)服务器实际上必须模拟SMTP客户端 CONNECT和DISCONNECT事件以及SMTP客户端EHLO,MAIL FROM,RCPT TO和DATA命令。

当新的邮件通过sendmail(1)命令行到达时,Postfix清理(8)服务器假设邮件从ESMTP从“localhost”到达,IP地址为“127.0.0.1” 。 结果与Sendmail版本8.12及更高版本中的命令行提交非常相似,尽pipeSendmail使用不同的机制来实现此结果。

查看postconf -n的日志和输出结果,明确了拒绝它的进程是通过inet:127.0.0.1:12768运行的。 这是Plesk提供的psa-pc-remote milter。

虽然我对Plesk没有任何经验,但是一些解决方法是closures的,只适用于non_smtpd 。 那么,我不知道这是坏的或好的build议,因为我不知道什么psa-pc-remote做你的电子邮件。 另一种方法,你可以看看Plesk的一些设置来closures这种拒绝。

对我来说,这是一个解决scheme,在/etc/postfix/main.cf中注释掉以下行:

 non_smtpd_milters 

尝试在postfix/main.cf设置milter_protocol=2