Я пытаюсь использовать Postfix (версия 2.6.6 на RHEL6) для подключения и отправки почты через почтовый ретранслятор в нашей внутренней сети. Я хочу подключиться к STARTTLS через порт 25 (порт 465 недоступен на этом сервере). Почтовый ретранслятор использует самозаверяющий сертификат SSL / TLS, поэтому мне пришлось пропустить проверку сертификата с помощью центра сертификации. Я обнаружил smtp_tls_security_level = fingerprint
который не проверяет цепочку доверия, дату истечения срока действия и т. д. Вместо этого он проверяет, используя отпечаток сертификата.
Я решил, что это идеальное решение, но когда я пытаюсь отправить электронное письмо, я все равно получаю ошибки в /var/log/maillog
что сказать postfix/smtp[15182]: certificate verification failed for xxxxxxxxxxxx[zz.zz.zz.zz]:25: untrusted issuer
.
Я думал, что весь смысл fingerprint
уровень безопасности - пропускать проверку сертификата. Я неправильно понимаю смысл этой опции? Мне нужно что-то еще настроить?
Вот соответствующие строки из main.cf
:
relayhost = [xxx.xxx.xxx]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl-passwords
smtp_sasl_security_options=
smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
smtp_tls_security_level = fingerprint
smtp_tls_fingerprint_digest = sha1
# fingerprint changed for ServerFault. just an example.
smtp_tls_fingerprint_cert_match = c1:d3:54:12:00:r0:ef:fa:42:48:10:ff:ac:1e:75:13:dd:ad:af:3e
smtp_tls_note_starttls_offer = yes
Изменить: добавлено жирным шрифтом
Я отвечу на свой вопрос здесь. Мне не удалось получить fingerprint
проверка работает, но я обнаружил, как получить TLS без проверки сертификата. Из руководство:
Обязательное шифрование TLS можно настроить, установив smtp_tls_security_level = encrypt. Несмотря на то, что всегда используется шифрование TLS, доставка почты продолжается, даже если сертификат сервера не является доверенным или имеет неправильное имя.
Я пробовал это однажды, но, должно быть, у меня не были включены все нужные параметры. Но используя настройки выше, я просто изменил smtp_tls_security_level
к encrypt
и он отлично работает.
Поскольку в Postfix включен chroot (по умолчанию в Debian) "/etc/postfix/master.cf":
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp unix - - - - - smtp
и значение по умолчанию для переменной smtp_tls_CAfile пусто, проход решения для его установки с местоположением файла сертификатов внутри de chroot:
В "/etc/postfix/main.cf":
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt