web-dev-qa-db-ja.com

Postfix接続がリモートでタイムアウトし、ローカルで正常に動作する

DebianでPostfixを実行しているメールを送信するために接続できなくなりました。それは約1週間前まで機能しました。その間にサーバーの構成に触れたことを思い出せないため、問題が何であるかを見つけるのが困難です。

サーバーからそれ自体に接続する場合、正常に機能します。

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

メールの受信は、リモートでの取得と同様に問題ありません。次に何を確認できるかわかりますか?

1
Riley

「接続タイムアウト」エラーが発生しているという事実は、これがファイアウォールの問題であることを強く示しています。実行してください

/sbin/iptables -nvL

サーバー上の既存のファイアウォールルールを確認します。インバウンドポート25の接続をブロックするルールが見つかると思います。

外部マシンからの接続を確認するには、最初にtracerouteを使用します。

traceroute server.example.com

次に、試してみるもう1つの優れたツールは mtr です。これは、pingとtracerouteを1つのツールに結合します。

最後に、nmapを使用して、外部システムからマシンをスキャンする必要があります。

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

ポート25が開いているかブロックされているかを確認します。

マシンで何も変更していない場合は、ISPが着信ポート25の接続をブロックし始めているのではないかと思われます。 nmapはそれを明らかにするのに役立ちます。

Postfixが 受信メールを受信するように設定 であることを確認する方法に関するいくつかの情報があります。特に、master.cf設定ファイルを再確認してください。

関連する可能性のあるserverfaultがあります 受信メッセージを拒否するpostfixに関する質問

2
Phil Hollenback