Postfix... Странноая хрень при форвардинге на эксечйндж. Вдруг кто знает... (Компьютеры)
написал NоlZz©, Москва, 2025-05-12, 20:46 (473 дней назад)
Странность с Exchange 2010 (windows server 2008 r2) и 2мя разными postfix (столкнулся у друзей)
поднял им новый (второй) почтовик для еще одного внешнего домена на свежем роки и тп и стлокнулся с хренью
1й postfix прекрасно форвардит сообщения на exchange
со стороны exchange TLS protocol SP_PROT_TLS1_2_SERVER negotiation succeeded using bulk encryption algorithm CALG_AES_256 with strength 256 bits, MAC hash algorithm CALG_SHA_384 with strength 384 bits and key exchange algorithm CALG_ECDHE with strength 256 bits
2й postfix - Cannot start TLS: handshake failure
со стороны exchange TLS negotiation failed with error AlgorithmMismatch
1й postfix
Centos 7.
postfix version: 2.10.1
openssl version: OpenSSL 1.0.2k-fips 26 Jan 2017
2й postfix
Rocky 9.
postfix version: 3.5.25
openssl version: OpenSSL 3.2.2 4 Jun 2024 (Library: OpenSSL 3.2.2 4 Jun 2024)
с инетом и между собой - вообще никаких проблем нет
у каждого постфикса 2 интерфейса - один смотрит наружу - прикрыт firewalld + fail2ban, второй внутрь (там отдельный влан, в который 2м интерфейсом смотрить виртуалка exchange)
я так понял на 2м не хватает алгоритмов/чего-то еще
нет поддержки tls1.2? Как ее включить/добавить?
менять exchange и тп смысла нет
но чего? весь мозг уже сломал
Вот этот сисадминский поток сознания
написал Remos, 2025-05-12, 20:59 (473 дней назад) @ NоlZz©
Конечно - все настроено - между старым и новым и инетом
написал NоlZz©, Москва, 2025-05-13, 11:07 (472 дней назад) @ Remos
все бегает
старый цеаляется к эксчанге по TLS 1.2
проверка TLS со старого
===
[root@mail ~]# openssl s_client -connect mail.domain.local:25 -starttls smtp
CONNECTED(00000003)
depth=0 DC = serv-exx01, DC = domain, DC = local, CN = serv-exx01.domain.local
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 DC = serv-exx01, DC = domain, DC = local, CN = serv-exx01.domain.local
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/DC=serv-exx01/DC=domain/DC=local/CN=serv-exx01.domain.local
i:/DC=serv-exx01/DC=domain/DC=local/CN=serv-exx01.domain.local
---
Server certificate
-----BEGIN CERTIFICATE-----
БЛАБЛАБЛАБЛА
-----END CERTIFICATE-----
subject=/DC=serv-exx01/DC=domain/DC=local/CN=serv-exx01.domain.local
issuer=/DC=serv-exx01/DC=domain/DC=local/CN=serv-exx01.domain.local
---
No client certificate CA names sent
Peer signing digest: SHA1
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2017 bytes and written 506 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-SHA384
Session-ID: 721A0000B6AB7B9E080B45B6CEA983AD317EADEA6DB3CA1CBCC6F68E82437E44
Session-ID-ctx:
Master-Key: F1EF7264EA902F531CB1E5F57D1EEC6367C7F0B2413AB45443E4D59A97BF6FA3 8E9620EFA40B8C0B63E3F56D76C401D8
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1747056170
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
250 CHUNKING
===
Проверка с нового вызывает отвал
===
root@mail ~]# openssl s_client -connect mail.domain.local:25 -starttls smtp
Connecting to 192.168.10.8
CONNECTED(00000003)
003E294B377F0000:error:0A000126:SSL routines::unexpected eof while reading:ssl/record/rec_layer_s3.c:689:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 314 bytes and written 367 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
===
Причем мне пофиг - будет внутрях TLS или нет
Ну явно же проблема в сертификате, его и менять надо, скорее всего
написал Remos, 2025-05-13, 11:29 (472 дней назад) @ NоlZz©
исправил Remos, в 2025-05-13, 11:32
https://github.com/docker-mailserver/docker-mailserver/issues/1401
Менять smtpd_tls_key_file и smtpd_tls_cert_file.
С чего бы в нем?
написал NоlZz©, Москва, 2025-05-13, 13:05 (472 дней назад) @ Remos
Разный формат, во времена эксченжа не было таких ECC и проч.
написал Remos, 2025-05-13, 14:06 (472 дней назад) @ NоlZz©
Но ведь
написал NоlZz©, Москва, 2025-05-13, 14:34 (472 дней назад) @ Remos
1 c postfix 2 работает
2 со всеми почтовиками в инете работает
3 с клиентами outlook 2010 и тп работает
Как вылечить - вот не догоняю
Или как отключить TLS на внутреннем ифейсе к херам
Делаю вроде все по букварю - а оно всеравно TLS пытается
Но ведь не знаем, что ты делаешь
написал Remos, 2025-05-13, 14:46 (472 дней назад) @ NоlZz©
Он и должен со старым работать, там старый формат. А сервера в интернете подписываются не самописными сертификатами. Просто попробуй перенести со старого постфикса сертификатные файлы на новый.
так оно и было сделано
написал NоlZz©, Москва, 2025-05-13, 14:47 (472 дней назад) @ Remos
срок действия до 2100 года
дела не в сертификатах постфикса
оно - С ЭЕСЧАНГИ НЕ ПОЛУЧАЕТ нихрена
а другой получает
Чего говорит
написал Remos, 2025-05-13, 14:59 (472 дней назад) @ NоlZz©
https://www.checktls.com/#ReceiverTest с опцией Check Cert Sigs?
ща изучим
написал NоlZz©, Москва, 2025-05-13, 15:53 (472 дней назад) @ Remos
нормально говорит - ругань ток на самоподписанный серт
написал NоlZz©, Москва, 2025-05-13, 16:04 (472 дней назад) @ Remos
seconds lookup result
[000.001] DNS LOOKUPS
[000.002] SEARCHLIST 168.63.129.16,1.1.1.1,8.8.8.8
[000.567] MX-->domain.ru (10) mta00.domain.ru
[000.567] MX-->domain.ru (20) mail.domain.ru
[001.212] MX:A-->mta00.domain.ru 5.xxx.xxx.xxx
[002.298] MX:A-->mail.domain.ru 5.xxx.xxx.xxx
seconds test stage and result
[000.000] Trying TLS on mta00.domain.ru[5.xxx.xxx.xxx:25] (10) @2025-05-13T12:57:00.065914Z
[000.128] Server answered
[000.256] <‑‑ 220 mail.domain.ru ESMTP server ready.
[000.256] We are allowed to connect
[000.256] ‑‑> EHLO www12-azure.checktls.com
[000.384] <‑‑ 250-mail.domain.ru
250-PIPELINING
250-SIZE 67108864
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
[000.385] We can use this server
[000.385] TLS is an option on this server
[000.385] ‑‑> STARTTLS
[000.512] <‑‑ 220 2.0.0 Ready to start TLS
[000.512] STARTTLS command works on this server
[000.512] SSL_ocsp_mode = SSL_OCSP_FULL_CHAIN
[000.657] Connection converted to SSL
SSLVersion in use: TLSv1_3
Cipher in use: TLS_AES_256_GCM_SHA384
Perfect Forward Secrecy: yes
Session Algorithm in use: Curve X25519 DHE(253 bits)
Certificate #1 of 1 (sent by MX):
Cert VALIDATION ERROR(S): self signed certificate
So email is encrypted but the recipient domain is not verified
Cert Hostname VERIFIED (mta00.domain.ru = domain.ru | DNS:domain.ru | DNS:mail.domain.ru | DNS:mta00.domain.ru)
Not Valid Before: Jun 16 13:25:15 2020 GMT
Not Valid After: May 23 13:25:15 2120 GMT
subject: /C=RU/L=MOSCOW/O=domain/OU=domain.ru/CN=domain.ru/EMAIL=postmaster@domain.ru
issuer: /C=RU/L=MOSCOW/O=domain/OU=domain.ru/CN=domain.ru/EMAIL=postmaster@domain.ru
[000.662] ~~> EHLO www12-azure.checktls.com
[000.910] <~~ 250-mail.domain.ru
250-PIPELINING
250-SIZE 67108864
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
[000.911] TLS successfully started on this server
[000.911] ~~> MAIL FROM:<test@checktls.com>
[001.038] <~~ 250 2.1.0 Ok
[001.038] Sender is OK
[001.038] ~~> QUIT
[001.166] <~~ 221 2.0.0 Bye
seconds test stage and result
[000.000] Trying TLS on mail.domain.ru[5.xxx.xxx.xxx:25] (20) @2025-05-13T12:57:01.236264Z
[000.128] Server answered
[000.257] <‑‑ 220 mail.domain.ru ESMTP server ready.
[000.257] We are allowed to connect
[000.257] ‑‑> EHLO www12-azure.checktls.com
[000.388] <‑‑ 250-mail.domain.ru
250-PIPELINING
250-SIZE 67108864
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
[000.388] We can use this server
[000.388] TLS is an option on this server
[000.388] ‑‑> STARTTLS
[000.514] <‑‑ 220 2.0.0 Ready to start TLS
[000.514] STARTTLS command works on this server
[000.515] SSL_ocsp_mode = SSL_OCSP_FULL_CHAIN
[000.662] Connection converted to SSL
SSLVersion in use: TLSv1_3
Cipher in use: TLS_AES_256_GCM_SHA384
Perfect Forward Secrecy: yes
Session Algorithm in use: Curve X25519 DHE(253 bits)
Certificate #1 of 1 (sent by MX):
Cert VALIDATION ERROR(S): self signed certificate
So email is encrypted but the recipient domain is not verified
Cert Hostname VERIFIED (mail.domain.ru = domain.ru | DNS:domain.ru | DNS:mail.domain.ru | DNS:mta00.domain.ru)
Not Valid Before: Jun 16 13:25:15 2020 GMT
Not Valid After: May 23 13:25:15 2120 GMT
subject: /C=RU/L=MOSCOW/O=domain/OU=domain.ru/CN=domain.ru/EMAIL=postmaster@domain.ru
issuer: /C=RU/L=MOSCOW/O=domain/OU=domain.ru/CN=domain.ru/EMAIL=postmaster@domain.ru
[000.665] ~~> EHLO www12-azure.checktls.com
[000.915] <~~ 250-mail.domain.ru
250-PIPELINING
250-SIZE 67108864
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
[000.916] TLS successfully started on this server
[000.916] ~~> MAIL FROM:<test@checktls.com>
[001.043] <~~ 250 2.1.0 Ok
[001.043] Sender is OK
[001.043] ~~> QUIT
[001.170] <~~ 221 2.0.0 Bye
И тест отправки получения норм
написал NоlZz©, Москва, 2025-05-13, 16:09 (472 дней назад) @ NоlZz©
Just a reminder that CheckTLS.com (and these tests) are NOT free. Please support us, thank you.
SUCCESSFUL //email/test From:
Your email was sent securely using TLS.
я же говорю
все бегает как часы
только с этого почтовика не форвардится на эксчангу с руганью
Проблема только в том, что эксченж не понимает запрос,
написал Remos, 2025-05-13, 16:30 (472 дней назад) @ NоlZz©
подписанный клиентским сертификатом от нового постфикса. Неизвестно, менял ли ты только северный или оба сертификата (smtpd_tls_xxx и smtp_tls_xxx). И сразу ли менял, или после обнаружения проблем.
И ещё use_tls yes? https://www.postfix.org/TLS_LEGACY_README.html#server_enable
Какой логлевел стоит?
/etc/postfix/main.cf:
smtp_tls_loglevel = ?
1й постфикс и 2й - обчлуживают разные домены если что - так вот
написал NоlZz©, Москва, 2025-05-13, 16:49 (472 дней назад) @ Remos
2й поднят с 0 на него ручками перенесен конфиг со старого 2го который был под центос
сертификаты то же перенесены
ну или как-то отключить на выход TLS тк оно найфиг не нужно
Самое интересное - через 5 минут постфикс снова форвардит
написал NоlZz©, Москва, 2025-05-13, 16:52 (472 дней назад) @ NоlZz©
но уже без ТЛС и все улетает на эксчейндж
Решилось все просто - дело не в постфиксе
написал NоlZz©, Москва, 2025-05-13, 17:16 (472 дней назад) @ NоlZz©
update-crypto-policies --set LEGACY
и делофф
Естественно, не в самом постфиксе, а в опенссл,
написал Remos, 2025-05-13, 17:20 (472 дней назад) @ NоlZz©
которая эти полиси использует при подписи запроса.
я как-то пропустил эту фичу которая в 8м rhel появилась
написал NоlZz©, Москва, 2025-05-13, 17:23 (472 дней назад) @ Remos
изучил кратко
просто подправлю нужную в /usr/share/crypto-policies/policies и все
или свою сделаю и залинкую
написал NоlZz©, Москва, 2025-05-13, 17:28 (472 дней назад) @ NоlZz©
По сути выходит,
написал Remos, 2025-05-13, 17:39 (472 дней назад) @ NоlZz©
что постфикс (он же опенссл) брал список криптоалгоритмов не из конфига, а из system-wide полиси, что и мешало старому эксченжу понять эти самые новые криптограммы, пока их не сменили на legacy.
он не берет ничего - он юзает библиотеку ssl которая
написал NоlZz©, Москва, 2025-05-13, 18:14 (472 дней назад) @ Remos
смотрит в политику
если в политике нет алгоритма предлагаемого эксчангой то отлуп
я собрал политику custom
и добавил в нее недостающее из legacy
применил
ща все бегает
как хорошо что я уже забыл всю эту галиматью....
написал БХ, Москва, 2025-05-13, 18:16 (472 дней назад) @ NоlZz©
Хмм, как же не берет, если берет?
написал Remos, 2025-05-13, 18:25 (472 дней назад) @ NоlZz©
"брал список криптоалгоритмов не из конфига, а из system-wide полиси"
Можно назвать это словом "смотрит", сути не меняет. И можно, скорее всего, за счёт конфига сделать override system-wide policy, тогда не будет туда даже смотреть. Но я не настолько глубоко в постфиксе, чтобы оценить сложность этой задачи.
да я просто политику переваял и применил и все взлетело
написал NоlZz©, Москва, 2025-05-13, 18:27 (472 дней назад) @ Remos
Так и должно
написал Remos, 2025-05-13, 18:37 (472 дней назад) @ NоlZz©
Но альтернативно постфикс может вызывать опенссл с конфиг-параметрами, включающими в т.ч. список алгоритмов. Тогда полиси не должно влиять, т.к. алгоритмы эксплицитно заданы.
чет ничего не могу найти на эту тему
написал NоlZz©, Москва, 2025-05-13, 19:17 (472 дней назад) @ Remos
Например, что-то типа
написал Remos, 2025-05-13, 19:27 (472 дней назад) @ NоlZz©
smtp_tls_exclude_ciphers configuration parameter. See there for details.
https://www.postfix.org/postconf.5.html
Чтобы исключить негодные алгоритмы, и должно быть нечто, чтобы их добавить.
разрешай не разрешай постфиксу - выше политики он прыгнуть не может
написал NоlZz©, Москва, 2025-05-15, 10:01 (470 дней назад) @ Remos
вчера проверил
Может
написал Remos, 2025-05-15, 10:57 (470 дней назад) @ NоlZz©
To override a system policy in Postfix, you primarily use the smtpd_recipient_restrictions or smtpd_policy_restrictions parameters in the /etc/postfix/main.cf file, along with Postfix's lookup tables. These mechanisms allow you to define specific access control rules that take precedence over the default behavior of the system.
Естественно, нужно проверять в части шифров/сертификатов, но в принципе это работает.
Конкретно в части шифрования
написал Remos, 2025-05-15, 12:05 (470 дней назад) @ Remos
To override the system policy cipher list in Postfix, you can set the tls_preempt_cipherlist parameter to yes in the main.cf configuration file. This setting instructs Postfix to use its own configured cipher list. Additionally, you can specify the desired cipher list using parameters like smtpd_tls_mandatory_ciphers and tls_high_cipherlist.
Чтобы получить, надо сначала послать
написал Remos, 2025-05-13, 15:02 (472 дней назад) @ NоlZz©
Вот он шлёт не то, что первый постфикс.
Так на втором все версии куда свежее, вряд ли чего-то там не хватает.
написал artemvp, 2025-05-12, 23:12 (473 дней назад) @ NоlZz©
Как предположение - просто запрещен TLS 1.2 и ниже (конфигом или другими способами), и разрешен только 1.3. Я бы эту версию пытался бы копать в первую очередь.
Ну и потом уже особенности сборки и алгоритмы (хотя, судя по ошибке, оно как бы напрашивается).
Странный какой-то линукс, Rocky, первый раз про такой слышу.
По моей ссылке объяснение, почему старье еще работает, а новье нет
написал Remos, 2025-05-13, 00:39 (473 дней назад) @ artemvp
While SSL and older versions of TLS have been deprecated...
Rocky это продолжение Centos от разрабов, они ушли из под РедХат - центоса нет
написал NоlZz©, Москва, 2025-05-13, 11:04 (472 дней назад) @ artemvp
Осталось закрыть кейс с ошибкой логе по довекоту и можно
написал NоlZz©, Москва, 2025-05-13, 18:26 (472 дней назад) @ NоlZz©
двигаться дальше
Error: net_connect_unix(/run/dovecot/stats-writer) failed: Permission deni
и так и эдак
все-равно ошибко
P.S. тут еще сеть хранения настравать на 10G коммутаторах Maipu и FS (c оптическими 100G транками-аплинками)
ну это просто совсем
Это стандартная фигня с разрешениями
написал Remos, 2025-05-13, 18:32 (472 дней назад) @ NоlZz©
исправил Remos, в 2025-05-13, 18:41
https://forums.freebsd.org/threads/mail-dovecot-stats-writer-failed-permission-denied.6...
Только переопределять permissions.
вобщем то же решил
написал NоlZz©, Москва, 2025-05-13, 19:16 (472 дней назад) @ Remos
добавил postfix и dovecot в группу vmail
и в dovectot.conf
service stats {
unix_listener stats-reader {
group = vmail
mode = 0666
user = vmail
}
unix_listener stats-writer {
group = vmail
mode = 0666
user = vmail
}
}
все теперь ровно