web-dev-qa-db-ja.com

Postfix SSL証明書の検証に失敗した問題

長年、私たちはUbuntu 12.04サーバーでPostfixを使用して、登録フォームの送信によりメールを送信してきました。これは、2017年3月に機能していました。

ただし、突然、すべてのドメインではなく、多くのドメインで「mail.logによる」「証明書の検証に失敗しました」エラーが発生します。たとえば、Gmailアドレスに送信されたメールはすべて拒否されますが、いくつかの.eduドメインを通過します。いくつかのオンラインガイドに従ってSSL証明書が最新であること、および適切なca-bundle.srtファイルがあり、main.cfが適切なファイルを指していることを確認するために、SSL証明書をチェックしました。すべてチェックアウトしているようです。また、2017年3月までは、このような問題はありません。

役立つ場合は、.eduメールサーバーのログの説明の例。

Oct  3 19:20:39 server postfix/pickup[27108]: 7A1BA5E02FB: uid=33 from=<www-data>
Oct  3 19:20:39 server postfix/cleanup[27114]: 7A1BA5E02FB: message-id=<07e5de6389f1ee1f0db978687a2a701c@server>
Oct  3 19:20:39 server postfix/qmgr[27109]: 7A1BA5E02FB: from=<www-data@server>, size=2354, nrcpt=1 (queue active)
Oct  3 19:20:39 server postfix/smtp[27116]: certificate verification failed for mailgateway[ip]:25: untrusted issuer /C=SE/O=AddTrust AB/OU=AddTrust Externa$
Oct  3 19:20:39 server postfix/pickup[27108]: C25FB5E02FC: uid=33 from=<www-data>
Oct  3 19:20:39 server postfix/cleanup[27114]: C25FB5E02FC: message-id=<839ec587b4d3c56ecb8be082fa36e626@server>
Oct  3 19:20:39 server postfix/qmgr[27109]: C25FB5E02FC: from=<www-data@server>, size=2354, nrcpt=1 (queue active)
Oct  3 19:20:40 server postfix/smtp[27116]: 7A1BA5E02FB: to=<email>, relay=mailgateway06[ip]:25, delay=0.62, delays=0.05/0.04/0.22/0.31, dsn=2.$
Oct  3 19:20:40 server postfix/qmgr[27109]: 7A1BA5E02FB: removed
Oct  3 19:20:40 server postfix/smtp[27121]: certificate verification failed for mailgateway04[ip]:25: untrusted issuer /C=SE/O=AddTrust AB/OU=AddTrust Externa$
Oct  3 19:20:41 server postfix/smtp[27121]: C25FB5E02FC: to=<email>, relay=mailgateway04[ip]:25, delay=1.4, delays=0.01/0.02/1/0.35, dsn=2.0.0,$
Oct  3 19:20:41 server postfix/qmgr[27109]: C25FB5E02FC: removed

または、Googleアドレスの場合、

Oct  3 19:00:32 server postfix/pickup[25780]: C0B5E5E02FB: uid=33 from=<www-data>
Oct  3 19:00:32 server postfix/cleanup[25788]: C0B5E5E02FB: message-id=<502b3fe5d32d82faca381ef6f18939f8@server>
Oct  3 19:00:32 server postfix/qmgr[25781]: C0B5E5E02FB: from=<www-data@server>, size=2353, nrcpt=2 (queue active)
Oct  3 19:00:32 server postfix/smtp[25790]: connect to gmail-smtp-in.l.google.com[2607:f8b0:4001:c14::1b]:25: Network is unreachable
Oct  3 19:00:33 server postfix/pickup[25780]: 0542A5E02FC: uid=33 from=<www-data>
Oct  3 19:00:33 server postfix/cleanup[25788]: 0542A5E02FC: message-id=<893ee1fe8af389833686860025d71966@server>
Oct  3 19:00:33 server postfix/qmgr[25781]: 0542A5E02FC: from=<www-data@server>, size=2353, nrcpt=2 (queue active)
Oct  3 19:00:33 server postfix/smtp[25790]: certificate verification failed for gmail-smtp-in.l.google.com[74.125.202.27]:25: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certifi$
Oct  3 19:00:33 server postfix/smtp[25796]: connect to gmail-smtp-in.l.google.com[2607:f8b0:4001:c14::1b]:25: Network is unreachable
Oct  3 19:00:33 server postfix/smtp[25796]: certificate verification failed for gmail-smtp-in.l.google.com[173.194.196.26]:25: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certif$
Oct  3 19:00:34 server postfix/smtp[25796]: 0542A5E02FC: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[173.194.196.26]:25, delay=1.1, delays=0.01/0.02/0.11/0.95, dsn=2.0.0$

原因は何でしょうか?

また、それが役立つ場合は、ここにmain.cfファイルがあります。

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = [SERVER_NAME_OMITTED]
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = [SERVER_NAME_OMITTED], localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,check_policy_service unix:private/policy-spf
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
#content_filter = smtp-amavis:[127.0.0.1]:10024
home_mailbox = Maildir/
mailbox_command =
spf-policyd_time_limit = 3600s

更新:多くのWebページに従ってcacert.pemファイルを生成し、そのファイルを使用するようにsmtp_tls_CAfileとsmtpd_tls_CAfileを設定することも試みました。これにより、別のエラーが発生します(メールは送信されません)。

Oct  4 01:51:51 server postfix/pickup[6816]: 969E15E02FB: uid=1000 from=<admin>
Oct  4 01:51:51 server postfix/cleanup[6841]: 969E15E02FB: message-id=<20171004015151.969E15E02FB@server>
Oct  4 01:51:51 server postfix/qmgr[6817]: 969E15E02FB: from=<admin@server>, size=291, nrcpt=1 (queue active)
Oct  4 01:51:51 server postfix/smtp[6848]: CA certificate verification failed for gmail-smtp-in.l.google.com[74.125.129.26]:25: num=7:certificate signature failure
Oct  4 01:51:52 server postfix/smtp[6848]: 969E15E02FB: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[74.125.129.26]:25, delay=0.45, delays=0.06/0.07/$
Oct  4 01:51:52 server postfix/qmgr[6817]: 969E15E02FB: removed
1
astrosa

あなたのUbuntuは非常に古いです。 CA証明書が古くなっているようです。

メールを送信する場合、独自の証明書は使用されません。 smtpdでメールを受信するだけです。

smtpは検証のために提供されたca-certificatesパッケージの証明書を使用します。ログのエラーを修正するために、バックポートをインストールしてみることができます。

ca-certificates-backport

更新:設定にsmtp_tls_CAfile =/etc/ssl/certs/ca-certificates.crtを含める必要があります

5
Rainer

CAバンドルファイルの正しいパスを入力する必要があります。

Postfix TLS Support を参照してください:

$ smtpd_tls_CAfileには、1つ以上の信頼できるCAのCA証明書が含まれています。 Postfixがオプションのchroot jailに入る前に、ファイルは(root権限で)開かれるため、chroot jail内からアクセスする必要はありません。

Postfixはchroot jailで実行でき、CAファイルにアクセスできないことに注意してください。

たとえば、(私のインフラストラクチャでは)Postfixディレクトリ内に他のパスを入力できます。

smtpd_tls_CAfile = /var/spool/postfix/etc/ssl/certs/ca-certificates.crt

ファイル/etc/ssl/certs/ca-certificates.crt存在しますか?

CAファイルが見つからず、配置場所がわからない場合は、次のコマンドを使用して、CAに類似したすべてのファイルを検索できます。

find / \( -name "*.crt" -o -name "*.ca-bundle" -o -name "*.pem" \) -type f -size +100k

CAファイルのサイズが100Kbより大きいというアプローチを使用しています(私のファイルは約270Kbです)

または、すべての証明書ファイルを検索してサイズ順に並べ替え、出力の最初の10行のみを見つけるコマンドを見つけることができます。

find / \( -name "*.crt" -o -name "*.ca-bundle" -o -name "*.pem" \) -type f -exec du -sh {} \; | sort -r -h | head
3
Egor Vasilyev