Столкнулся с небольшой ошибкой в логе postfix, которая не влияет непосредственно на работоспособность почтовой системы, но тем не менее, надо было ее исправить. Она связана с тем, что postfix не знает обо всех актуальных CA сертификатах и не всегда может проверить валидность сертификата при общении с другими серверами.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Сама ошибка выглядит следующим образом:
Oct 30 21:00:50 postfix/smtp[25602]: certificate verification failed for gmail-smtp-in.l.google.com[64.233.162.26]:25: untrusted issuer /OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
В принципе, по тексту все понятно и без пояснений. Postfix не может проверить издателя (issuer) сертификата. Сервер очень старый, обновлений CA на нем давно не было и они уже не выходят. Решил просто руками обновить список CA сертификатов.
Для начала проверим, задан ли вообще в конфиге postfix параметр smtp_tls_CAfile. Для этого просто откройте файл main.cf и проверьте там. Если ничего нет, значит стоит дефолтное значение. Какое оно, можно проверить командой postconf.
# postconf | grep smtp_tls_CAfile
Если параметр не задан, то зададим его сами. Если же указан какой-то конкретный файл, то надо работать с ним.
Сначала просто качаем свежий файл с CA сертификатами. Я не знаю, где брать самый актуальный и полный. Гугл почти везде меня привел к ссылке https://curl.haxx.se/ca/cacert.pem. Оттуда и возьмем. В системах, где я обновлял файл, старый находился по адресу /etc/pki/tls/certs/ca-bundle.crt, поэтому сначала сделаем его бэкап, а потом заменим новым.
# cp /etc/pki/tls/certs/ca-bundle.crt /root/ca-bundle.crt-old # curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
или
# wget -O --no-check-certificate /etc/pki/tls/certs/ca-bundle.crt https://curl.haxx.se/ca/cacert.pem
Дальше укажем на этот файл в конфиге postfix - main.cf. Для этого добавляем туда:
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
После этого надо перезапустить postfix. Я проделал это на нескольких серверах. Ошибка исчезла, кроме одного домена - mx.yandex.ru. Для него по-прежнему не получалось проверить подлинность сертификата:
Oct 30 19:46:37 postfix/smtp[11671]: certificate verification failed for mx.yandex.ru[213.180.204.89]:25: untrusted issuer /C=PL/O=Unizeto Sp. z o.o./CN=Certum CA
Я проверил файл ca-bundle.crt, там действительно не было информации об издателе Certum CA. Не придумал ничего лучше, кроме как добавить его туда вручную. Для этого скачал CA.pem с сайта издателя - https://www.certum.pl/CA.pem и добавил его содержимое в самый конец ca-bundle.crt.
То есть просто дабвил вот это в конец файла ca-bundle.crt, по аналогии с остальными записями:
Certum Certification Authority =============================== -----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs 6GAqm4VKQPNriiTsBhYscw== -----END CERTIFICATE-----
Подозреваю, что где-то есть более полный файл с мировыми CA root. Если кто-то знает, где его лучше брать, прошу поделиться в комментариях.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Если у вас Красная-шапка(CentOS), то обновляйте через менеджер пакетов
yum update ca-certificates
В других системах так же, через свой менеджер пакетов.
Да, я понимаю. Для этих систем уже нет обновлений, поэтому пришлось так.