CentOS 7 サーバーには postfix、dovecot、mailx がインストールされています。私のローカルdevboxで実行されているリモートThunderbirdクライアントからサーバーへのIMAP接続を作成できます。しかし、私の開発ボックスにローカルにインストールされたThunderbirdからサーバー経由で電子メールを送信することはできません。多くの研究の終わりに、私のdevbox ISPがポート25をブロックしたので、原因が見つかりました。だからメール送信ポートを465に変更したいです。これには、サーバーファイアウォールとpostfixへの変更とdevbox Thunderbirdの変更が含まれます。
この質問は、ファイアウォールによって状況が複雑になるCentOS 7でこれを行う方法を尋ねているので、stackexchangeネットワークの同様の質問とは異なります。
単にSMTPポートを変更することの問題は、他のメールサーバーが互いに電子メールを送信するときにポート25を使用することです。 smtpポートを465に変更すると、誰も私のサーバーに電子メールを送信できません。 私のアウトバウンド電子メールがポート465を通過し、ポート25が他のメールサーバーからメールを受信するために開かれるように、postfix、Firewalld、およびThunderbirdをどのように変更しますか?
特定の構成ファイルの特定の構文が必要です。私はすでに知っています答えはリレーホストの設定に関連しています。しかし、CentOS 7ではどのように設定しますか?
これまで私がしたことは次のとおりです。
465 inet n - - - - smtpd
1.)次の行を次に追加します/etc/postfix/master.cf
。
# =========================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ====================================================================
smtp inet n - n - - smtpd
465 inet n - - - - smtpd
/usr/lib/firewalld/services/smtp.xml
2.) 次に、次のように読み込み、ファイアウォールのSMTPポート番号を465に変更しました。
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Mail (SMTP)</short>
<description>This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You $
<port protocol="tcp" port="465"/>
</service>
3.) それでもサーバー上にある状態で、それから入力するとsystemctl stop postfix
すべてsystemctl start postfix
がsystemctl status postfix
うまくいきます。そうすれば、firewall-cmd --reload
タイピングに問題はありませんでした。
4.) 次に、devboxのThunderbirdから出るsmtpポートを465に変更しました。
5.) サーバーで @derobert の提案に従って、tcpdump -n -i any tcp port 465
私の devbox Thunderbird と入力し、使用してサーバー経由で電子メールを送信し、サーバーから以下を印刷してみました。
tcpdump -n -i any tcp port 465
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
18:07:36.276193 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [S.], seq 3232257854, ack 2935370285, win 14480, options [mss 1460,sackOK,TS val 979486294 ecr 14200749,nop,wscale 7], length 0
18:07:36.361712 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 1, win 115, options [nop,nop,TS val 14200832 ecr 979486294], length 0
18:07:36.362152 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [P.], seq 1:43, ack 1, win 114, options [nop,nop,TS val 979486380 ecr 14200832], length 42
18:07:36.366824 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [P.], seq 1:186, ack 1, win 115, options [nop,nop,TS val 14200832 ecr 979486294], length 185
18:07:36.366865 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [.], ack 186, win 122, options [nop,nop,TS val 979486385 ecr 14200832], length 0
18:07:36.454916 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 43, win 115, options [nop,nop,TS val 14200920 ecr 979486380], length 0
18:07:36.454961 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [P.], seq 43:195, ack 186, win 122, options [nop,nop,TS val 979486473 ecr 14200920], length 152
18:07:36.539237 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 195, win 123, options [nop,nop,TS val 14201009 ecr 979486473], length 0
18:09:20.466757 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [F.], seq 186, ack 195, win 123, options [nop,nop,TS val 14304941 ecr 979486473], length 0
18:09:20.467113 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [F.], seq 195, ack 187, win 122, options [nop,nop,TS val 979590485 ecr 14304941], length 0
18:09:20.550693 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 196, win 123, options [nop,nop,TS val 14305025 ecr 979590485], length 0
^C
11 packets captured
12 packets received by filter
0 packets dropped by kernel
6.)もう一度@derobertの提案に従って、devboxからnc my.server.ip.addr 465 < /dev/null
端末に応答を入力して印刷しました220 mydomain.com ESMTP Postfix
。
Thunderbirdの送信サーバー(SMTP)設定は次のとおりです。
Description: <Not Specified>
Server Name: mydomain.com
Port: 465
User Name: me
Authentication Method: Normal Password
Connection Security: SSL/TLS
ただし、Thunderbirdの接続時間がまだ超過したため、電子メールは送信されません。また何をすべきですか?
注:/usr/lib/firewalld/services/smtp.xml
ポート25を表示するように変更し、上記の他の手順5で他のすべての項目を同じままにしたときにサーバーから電子メールを受信する機能を再取得しましたが、サーバーを介して電子メールを送信することはできませんでした。
編集する:
@jsbillingsはmaster.cfに送信ポートを定義することを提案しました。さらに進化するために、postconf -M
端末にmaster.cfの関連内容を入力して印刷しました。まだメールを送信できません。しかし、今日この問題の解決中に変更した結果は次のとおりです。
smtp inet n - n - - smtpd
587 inet n - - - - smtpd
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o smtpd_sender_restrictions=reject_sender_login_mismatch
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
ベストアンサー1
他の人がポート25以外のポートでリッスンするSMTPサーバーを持つことを期待することはできません。 ISPがアウトバウンドポート25をブロックしている場合は、ISPを介してメールを中継するようにpostfixシステムを設定できます。Comcastのこの例では。
ただし、正直にアウトバウンドポート25をブロックするISPで独自のメールサービスを実行している場合は、ポート25をブロックしない商用インターネットプロバイダにサービスを切り替えるか、メールをホスティングに移動することをお勧めします。 SMTP プロバイダーを許可します。
編集する:
これで質問した内容をよりよく理解するようになりました。 SMTPサーバーがメールを受け入れるようにしたい場合そしてSMTP 送信ホストです。 2番目のサービスを追加し/etc/postfix/master.cf
てSASL認証を設定する必要があります。 Dovecot Wikiには構成例このプロセスのために。