Gmailからメールを受信できません


15

数日前、Gmailは突然メールサーバーへのメール送信を停止することにしました。私は、PostfixとDovecotを使用し、すべてが更新されたDebian 7で実行されている有料SSL証明書を使用しています。

mail.logは次のエラーを表示します:

Dec 19 11:09:11 server postfix/smtpd[19878]: initializing the server-side TLS engine
Dec 19 11:09:11 server postfix/tlsmgr[19880]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache
Dec 19 11:09:11 server postfix/tlsmgr[19880]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup
Dec 19 11:09:11 server postfix/smtpd[19878]: connect from mail-wi0-x230.google.com[2a00:1450:400c:c05::230]
Dec 19 11:09:11 server postfix/smtpd[19878]: setting up TLS connection from mail-wi0-x230.google.com[2a00:1450:400c:c05::230]
Dec 19 11:09:11 server postfix/smtpd[19878]: mail-wi0-x230.google.com[2a00:1450:400c:c05::230]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STR                              ENGTH:!aNULL:!DES:!3DES:!MD5:!DES+MD5:!RC4:!RC4-MD5"
Dec 19 11:09:11 server postfix/smtpd[19878]: SSL_accept:before/accept initialization
Dec 19 11:09:11 server postfix/smtpd[19878]: SSL_accept:error in unknown state
Dec 19 11:09:11 server postfix/smtpd[19878]: SSL_accept error from mail-wi0-x230.google.com[2a00:1450:400c:c05::230]: -1
Dec 19 11:09:11 server postfix/smtpd[19878]: warning: TLS library problem: 19878:error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown                               protocol:s23_srvr.c:647:
Dec 19 11:09:11 server postfix/smtpd[19878]: lost connection after STARTTLS from mail-wi0-x230.google.com[2a00:1450:400c:c05::230]
Dec 19 11:09:11 server postfix/smtpd[19878]: disconnect from mail-wi0-x230.google.com[2a00:1450:400c:c05::230]

私の接尾辞からの抜粋main.cf

smtpd_use_tls=yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_CAfile = path to CA Bundle
smtpd_tls_cert_file= path to cert (pem)
smtpd_tls_key_file=path to key (pem)
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_exclude_ciphers = aNULL, DES, 3DES, MD5, DES+MD5, RC4, RC4-MD5
smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_received_header = yes
tls_preempt_cipherlist = yes
tls_medium_cipherlist = AES256+EECDH:AES256+EDH

他の人からメールを定期的に受け取るので、問題がどこにあるのかわかりません。Telnet経由でポート25に接続するエラー、またはopenssl経由でポート465に接続するエラーはありません

追加: Googleからの見返りにこのメールを受け取りました:

Delivery to the following recipient failed permanently:

     <removed>

Technical details of permanent failure:
TLS Negotiation failed

----- Original message -----
[...]

たぶんそれは私の暗号リストの問題でしょうか?

masegaloehの質問への回答:

openssl s_client -connect localhost:25 -starttls smtp
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
[...]
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]
---
No client certificate CA names sent
---
SSL handshake has read 6267 bytes and written 477 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
Protocol  : TLSv1.2
Cipher    : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: [...]
Session-ID-ctx:
Master-Key: [...]
Key-Arg   : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 3600 (seconds)
TLS session ticket: [...]

Compression: 1 (zlib compression)
Start Time: 1418986680
Timeout   : 300 (sec)
Verify return code: 19 (self signed certificate in certificate chain)

---
250 DSN

更新1: SSL証明書を再発行しました。次のようにすべてを生成しました:
openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr -sha256

次に、crtとで構成される新しいファイルを作成しました。その後key、CAバンドルを作成しました。
cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > bundle.crt

dovecotおよびpostfix configにすべてを追加し、両方のサービスを再起動しました。
Googleはまだ私のサーバーにメールを送信できず、その結果TLS Negotiation failed

別のメールプロバイダー(web.de)を試したところ、メールが送信されました。
web.deログ:

Dec 19 17:33:15 server postfix/smtpd[14105]: connect from mout.web.de[212.227.15.3]
Dec 19 17:33:15 server postfix/smtpd[14105]: setting up TLS connection from mout.web.de[212.227.15.3]
Dec 19 17:33:15 server postfix/smtpd[14105]: mout.web.de[212.227.15.3]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH"
Dec 19 17:33:15 server postfix/smtpd[14105]: mout.web.de[212.227.15.3]: save session EA1635ED786AFC2D9C7AB43EF43620A1D9092DC640FDE21C01E7BA25981D2445&s=smtp&l=268439647 to smtpd cache
Dec 19 17:33:15 server postfix/tlsmgr[14107]: put smtpd session id=EA1635ED786AFC2D9C7AB43EF43620A1D9092DC640FDE21C01E7BA25981D2445&s=smtp&l=268439647 [data 127 bytes]
Dec 19 17:33:15 server postfix/tlsmgr[14107]: write smtpd TLS cache entry EA1635ED786AFC2D9C7AB43EF43620A1D9092DC640FDE21C01E7BA25981D2445&s=smtp&l=268439647: time=1419006795 [data 127 bytes]
Dec 19 17:33:15 server postfix/smtpd[14105]: Anonymous TLS connection established from mout.web.de[212.227.15.3]: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)

Soultion:
有効TLSv1TLSv1.1した後、smtpd_(mandatory)_protocolsセクションですべてが正常に動作します。ありがとうマセガロー

Dec 20 11:44:46 server postfix/smtpd[31966]: initializing the server-side TLS engine
Dec 20 11:44:46 server postfix/tlsmgr[31968]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache
Dec 20 11:44:46 server postfix/tlsmgr[31968]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup
Dec 20 11:44:46 server postfix/smtpd[31966]: connect from mail-wi0-x235.google.com[2a00:1450:400c:c05::235]
Dec 20 11:44:46 server postfix/smtpd[31966]: setting up TLS connection from mail-wi0-x235.google.com[2a00:1450:400c:c05::235]
Dec 20 11:44:46 server postfix/smtpd[31966]: mail-wi0-x235.google.com[2a00:1450:400c:c05::235]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH"
Dec 20 11:44:46 server postfix/smtpd[31966]: Anonymous TLS connection established from mail-wi0-x235.google.com[2a00:1450:400c:c05::235]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)

commandの出力は何openssl s_client -connect localhost:25 -starttls smtpですか?
マセガロー14

私の質問に追加しました@masegaloeh
Octfx 14

これはeximでも私に影響を与えています。素晴らしい質問です。
ボイドスティーブンスミスジュニア

これは私に影響を与え始めたばかりで、main.cfにtls_protocol行がありませんでした。また、文書化されたデフォルトはSSL2 / 3のみを無効にすることです。しかし、以下の答えは私の問題を解決しました。
ブーズ

回答:


21

TLDR:TLSv1.2接続のみを許可するため、TLSプロトコルは厳しすぎます。

smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3

また、GMAIL はTLSv1プロトコルでサーバーにメールを送信します。これが、TLSネゴシエーションが失敗する理由です。

明らかな解決策は、TLSv1およびTLSv1.1プロトコルを許可し、まだ(安全でない)SSLv2およびSSLv3プロトコルを無効にすることです。


説明

STARTTLSを介して GMAILおよびFACEBOOKからメールを受信できない場合、お客様のケースを確認できます。

サーバーにメールを送信できないGMAILのみを実行する理由

これは、GMAILがメールを送信するときのメールログスニペットです

Dec 19 23:37:47 tls postfix/smtpd[3876]: initializing the server-side TLS engine
Dec 19 23:37:47 tls postfix/smtpd[3876]: connect from mail-wg0-f47.google.com[74.125.82.47]
Dec 19 23:37:48 tls postfix/smtpd[3876]: setting up TLS connection from mail-wg0-f47.google.com[74.125.82.47]
Dec 19 23:37:48 tls postfix/smtpd[3876]: mail-wg0-f47.google.com[74.125.82.47]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH:!aNULL:!DES:!3DES:!MD5:!DES+MD5:!RC4:!RC4-MD5"
Dec 19 23:37:48 tls postfix/smtpd[3876]: SSL_accept:before/accept initialization
Dec 19 23:37:48 tls postfix/smtpd[3876]: SSL_accept:error in unknown state
Dec 19 23:37:48 tls postfix/smtpd[3876]: SSL_accept error from mail-wg0-f47.google.com[74.125.82.47]: -1
Dec 19 23:37:48 tls postfix/smtpd[3876]: warning: TLS library problem: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:647:
Dec 19 23:37:48 tls postfix/smtpd[3876]: lost connection after STARTTLS from mail-wg0-f47.google.com[74.125.82.47]
Dec 19 23:37:48 tls postfix/smtpd[3876]: disconnect from mail-wg0-f47.google.com[74.125.82.47]

そして、これはFACEBOOKがメールを送信するときのメールログスニペットです

Dec 19 23:11:14 tls postfix/smtpd[3844]: initializing the server-side TLS engine
Dec 19 23:11:14 tls postfix/tlsmgr[3846]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache
Dec 19 23:11:14 tls postfix/tlsmgr[3846]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup
Dec 19 23:11:14 tls postfix/smtpd[3844]: connect from outcampmail003.ash2.facebook.com[66.220.155.162]
Dec 19 23:11:14 tls postfix/smtpd[3844]: setting up TLS connection from outcampmail003.ash2.facebook.com[66.220.155.162]
Dec 19 23:11:14 tls postfix/smtpd[3844]: outcampmail003.ash2.facebook.com[66.220.155.162]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH:!aNULL:!DES:!3DES:!MD5:!DES+MD5:!RC4:!RC4-MD5"
Dec 19 23:11:14 tls postfix/smtpd[3844]: SSL_accept:before/accept initialization
Dec 19 23:11:15 tls postfix/smtpd[3844]: SSL_accept:error in unknown state
Dec 19 23:11:15 tls postfix/smtpd[3844]: SSL_accept error from outcampmail003.ash2.facebook.com[66.220.155.162]: -1
Dec 19 23:11:15 tls postfix/smtpd[3844]: warning: TLS library problem: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:647:
Dec 19 23:11:15 tls postfix/smtpd[3844]: lost connection after STARTTLS from outcampmail003.ash2.facebook.com[66.220.155.162]
Dec 19 23:11:15 tls postfix/smtpd[3844]: disconnect from outcampmail003.ash2.facebook.com[66.220.155.162]
Dec 19 23:11:16 tls postfix/smtpd[3844]: connect from outcampmail004.ash2.facebook.com[66.220.155.163]
Dec 19 23:11:17 tls postfix/smtpd[3844]: 962C281443: client=outcampmail004.ash2.facebook.com[66.220.155.163]
Dec 19 23:11:18 tls postfix/cleanup[3849]: 962C281443: message-id=<722b2b198d163c43d3bf013bdd396817@www.facebook.com>
Dec 19 23:11:18 tls postfix/qmgr[3843]: 962C281443: from=<notification+zj4zc0zzjfac@facebookmail.com>, size=18002, nrcpt=1 (queue active)
Dec 19 23:11:18 tls postfix/local[3850]: 962C281443: to=<root@tls.example.net>, orig_to=<zera@tls.example.net>, relay=local, delay=1.6, delays=1.5/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Dec 19 23:11:18 tls postfix/qmgr[3843]: 962C281443: removed
Dec 19 23:11:24 tls postfix/smtpd[3844]: disconnect from outcampmail004.ash2.facebook.com[66.220.155.163]

いくつかの分析

  • 最初のスニペットでは、GMAILはSTARTTLS経由でメールを送信しようとします。TLSネゴシエーション時にエラーが発生するため、GMAILサーバーはそれを切断します。エラーが発生する理由を以下で説明します。
  • 2番目のスニペットでは、FACEBOOKもSTARTTLSを介した電子メールの送信に失敗しています。フォールバックプロセスでは、FACEBOOKはプレーンテキストモードで電子メールを再送信します。この場合、サーバーは喜んでそれを受け入れます。

そのため、GMAILのみがサーバーへのメール送信に失敗する理由を説明しています。GMAILには、TLSネゴシエーションが失敗した場合にフォールバックするメカニズムがありません。他のメールサーバーは、フォールバックメカニズムを使用して、電子メールの配信を成功させることができます。

TLSネゴシエーションエラーが発生する理由

web.de maillogから興味深い行を見つけました

Dec 19 17:33:15 foxdev postfix/smtpd[14105]: Anonymous TLS connection established from mout.web.de[212.227.15.3]: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)

そして、この構成を指定することを見つけます main.cf

smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3

つまり、サーバーはTLSv1.2が使用されている場合にのみTLS接続を受け入れます。TLSv1.2以外では、サーバーはTLSネゴシエーションエラーを表示します。

に変更smtpd_tls_(mandatory_)protocolsする!SSLv2,!SSLv3,!TLSv1と、エラーが引き続き発生します。つまり、GMAILとFACEBOOKは、TLSv1.1とTLSv1.2以外のプロトコルを使用してメールサーバーに接続しようとします。

に変更smtpd_tls_(mandatory_)protocolsすると!SSLv2,!SSLv3、TLSネゴシエーションは成功します。GMAILとFACEBOOKがTLSv1プロトコルでサーバーに接続することを確認します

Dec 20 00:21:46 tls postfix/smtpd[4261]: Anonymous TLS connection established from outmail038.prn2.facebook.com[66.220.144.165]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)
Dec 20 00:23:00 tls postfix/smtpd[4261]: Anonymous TLS connection established from mail-wi0-f174.google.com[209.85.212.174]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)

FreeBSDフォーラムの他の人々もこの動作を確認しています。

解決

明らかな解決策は、postfixでTLSv1とTLSv1.1を有効にすることです。これにより、GMAILなどのフォールバックメカニズムを持たないメールサーバーがサーバーと通信できるようになります。

TLSv1およびTLSv1.1サポートを無効にし、TLSv1.2プロトコルのみを残す理由はわかりません。Webサーバーであり、ユーザーが最新のブラウザーのみを使用する場合は、サーバーでTLSv1を無効にできます。これは、プロトコルTLSv1をサポートしない古いブラウザーのみが許可されているためです


0

私が見ることができる1つの潜在的な問題は、OpenSSLによって報告された自己署名証明書の明らかな使用です:

Verify return code: 19 (self signed certificate in certificate chain)

有料SSL証明書を使用している場合、自己署名証明書を使用しないでください。

PEMファイルに有料の証明書が含まれていることを確認し、完全な証明書チェーンが含まれていることも確認します。


自己署名証明書は、CAが自己署名したCAからのルート証明書です。
Octfx 14

あなたのCAは誰ですか?チェーンで自己署名証明書を使用する場合は、.pemファイルでチェーン全体を提供する必要があります。
クレイグワトソン14

これはComodoからの証明書です。私が署名した証明書は使用しません。前述のように、Comodoは自分でルート証明書に署名します。この場合、結果はcode: 19 (self signed certificate)
Octfx 14

1
code 19完全なチェーンが提供されている場合、メッセージを受信しないでください。StartSSLの証明書を使用します。これにより、コマンドの先頭に同じエラーが表示されますが、smtpd_tls_cert_filePEMファイル内で完全なチェーン(ルートCAを含む)を提供するため、クライアントには完全なチェーンを検証するために必要なすべての証明書があります。
クレイグワトソン14

テストするために証明書を再発行します。問題は、Googleがちょうどもう私にメールを配信することはできません、私は何も変更しなかったこと、である
Octfx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.