В течение многих лет мы использовали Postfix на сервере Ubuntu 12.04 для отправки писем через заполненную регистрационную форму. Это сработало совсем недавно, в марте 2017 года.
Однако внезапно postfix выдает ошибку «ошибка проверки сертификата» (согласно mail.log) для многих, но не для всех доменов. Например, он отклоняет любую почту, отправленную на адрес Gmail, но будет проходить через несколько доменов .edu. Я проверил сертификаты SSL, чтобы убедиться, что они обновлены в соответствии с некоторыми онлайн-руководствами, и что существует правильный файл ca-bundle.srt, а main.cf указывает на правильный файл. Кажется, все проверено. И снова, до марта 2017 года подобных проблем не было.
Если поможет, пример описания журнала для почтового сервера .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@GMAIL.COM>, 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
Обновление: теперь я также попытался создать файл 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@gmail.com>, 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
Ваш Ubuntu очень старый. Кажется, ваши CA-сертификаты устарели.
Ваш собственный сертификат не используется при отправке писем. Это только для получения почты с помощью smtpd.
smtp использует предоставленные сертификаты пакета ca-сертификатов для проверки. Вы можете попробовать установить бэкпорт, чтобы исправить ошибку в логах.
Например ca-сертификаты-backport
ОБНОВЛЕНИЕ: ваша конфигурация должна включать smtp_tls_CAfile = / etc / ssl / certs / ca-Certific.crt
Вам нужно ввести правильный путь для файла пакета CA.
Видеть Поддержка Postfix TLS:
Файл $ smtpd_tls_CAfile содержит сертификаты CA одного или нескольких доверенных центров сертификации. Файл открывается (с привилегиями root) до того, как Postfix входит в необязательную chroot-тюрьму, и поэтому нет необходимости быть доступным изнутри chroot-тюрьмы.
Обратите внимание, 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 имеет размер больше 100 КБ (мой файл составляет около 270 КБ)
Или вы можете найти все файлы сертификатов и отсортировать их по размеру и получить только первые 10 строк вывода команды find:
find / \( -name "*.crt" -o -name "*.ca-bundle" -o -name "*.pem" \) -type f -exec du -sh {} \; | sort -r -h | head