Linux

Postfix遠端連接超時,本地工作正常

  • March 14, 2011

在 Debian 上執行 Postfix 我無法再連接發送郵件。它工作到大約一周前。我不記得在那段時間接觸過伺服器的配置,這讓我很難找出問題所在。

從伺服器連接到自身時,它工作正常:

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

配置如下:

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

那麼另一個值得嘗試的好工具是mtr,它將 ping 和 traceroute 結合到一個工具中。

最後,您應該使用 nmap 從外部系統掃描您的機器:

sudo nmap -sS -V -O server.example.com

並查看埠 25 是打開還是阻塞。

如果您沒有更改機器上的任何內容,我懷疑您的 isp 已開始阻止傳入埠 25 連接。nmap 將有助於揭示這一點。

這裡有一些關於如何確認 postfix設置為接收傳入郵件的資訊。特別是仔細檢查您的master.cf配置文件。

這是關於 postfix 拒絕傳入消息的可能相關的 serverfault問題。

引用自:https://serverfault.com/questions/247208