大约两周前,我在 ubuntu 服务器 (9.04) 上运行的 postfix (V: 2.5.5-1.1) 开始拒绝来自外部的邮件。通过 telnet 进行“手动”会话显示,连接总是在
MAIL FROM: [email protected]
输入行,并显示消息“外部主机关闭连接”。
在 LAN 内的另一个客户端上执行相同操作效果很好。在日志文件中,我收到以下行:“在 xxxxx.tld[xxx.xxx.xxx.xxx] 发送 MAIL 后丢失连接”这是在以下几行之后:
match_hostaddr: XXX.XXX.XXX.XXX ~? [::1]/128
match_hostname: XXXX.tld ~? 192.168.1.0/24
...
match_list_match: xxx.xxx.xxx.xxx: no match
这似乎暗示了某种过滤器会检查允许的地址。我无法找到此过滤器的位置,也无法关闭它。我甚至不确定这是否是导致我出现问题的原因。即使 LAN 内部的连接也显示“match_list_match:... no match”行,它们也不会断开连接。
我最近没有更改任何配置文件,下面是我的 main.cf 当前状态。我真的不知道所有参数的作用以及它们如何交互。我只是最初设置它,它运行良好(直到最近)。
smtpd_banner = $myhostname ESMTP $mail_name (GNU)
biff = no
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/server.crt
smtpd_tls_key_file=/etc/ssl/private/server.key
#smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_sasl_auth_enable = no
smtp_use_tls=no
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
myhostname = XXXXXXX.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = XXXX.XXXX.com, XXXX.com, localhost.XXXXX.com, localhost
relayhost = XXX.XXX.XXX.XXX
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
#smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_
检查进程列表时,postfix/smtpd 运行为
smtpd -n smtp -t inet -u -c -o stress -v -v
有什么线索吗?
答案1
事实证明这与我的配置无关,但似乎我的 ISP 正在终止 smtp 连接。他们已被一家新公司接管,并且似乎已经实施了新政策。
我最终使用 ISP 的邮件服务器作为中继。这很简单,因为他们允许从其池中的任何 IP 进行中继访问,而无需身份验证。