在Debian上运行Postfix我无法连接发送邮件。 它一直工作到大约一个星期前。 我不记得在那个时候触摸服务器的configuration,这使我很难找出问题所在。
当从服务器连接到它本身时,它工作正常:
root@xxxx:~# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. ehlo localhost 220 mail.xxxx.de ESMTP Postfix (Debian/GNU) 250-mail.xxxx.de 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN quit 221 2.0.0 Bye Connection closed by foreign host.
试图远程执行相同的操作:
laptop:~ $ telnet mail.xxxx.de 25 Trying 93.xx.xx.xx... telnet: connect to address 93.xx.xx.xx: Operation timed out telnet: Unable to connect to remote host
configuration如下:
root@xxxx:~# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no broken_sasl_auth_clients = yes config_directory = /etc/postfix home_mailbox = Maildir/ inet_interfaces = all inet_protocols = ipv4 mailbox_command = mailbox_size_limit = 0 mydestination = localhost.localdomain, localhost.localdomain, localhost myhostname = mail.xxxx.de mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp_tls_note_starttls_offer = yes smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_exceptions_networks = $mynetworks smtpd_sasl_local_domain = smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_auth_only = no smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_tls_session_cache_timeout = 3600s smtpd_use_tls = yes tls_random_source = dev:/dev/urandom virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf virtual_gid_maps = static:8 virtual_mailbox_base = /var/vmail virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 150 virtual_transport = dovecot
接收邮件是没有问题的,就像远程检索邮件一样。 你有什么想法我可以检查下?
“连接超时”错误的事实强烈表明这是一个防火墙问题。 请跑
/sbin/iptables -nvL
检查服务器上现有的防火墙规则。 我怀疑你会发现阻止入站端口25连接的规则。
要检查外部机器的连通性,首先使用traceroute:
traceroute server.example.com
那么另一个不错的工具就是将ping和traceroute结合成一个工具的mtr 。
最后,你应该使用nmap从外部系统扫描你的机器:
sudo nmap -sS -V -O server.example.com
并查看端口25是打开还是阻塞。
如果你没有改变你的机器上的任何东西,我的怀疑是你的isp已经开始阻塞传入的端口25连接。 nmap将帮助揭示。
以下是关于如何确认postfix 设置为接收传入邮件的一些信息。 特别仔细检查你的master.cfconfiguration文件。
这里有一个关于postfix拒绝接收消息的可能相关的serverfault 问题 。