В таблице ниже показано, какие протоколы/порты можно использовать на каждом этапе передачи электронной почты. В таблице также указано, какие протоколы/порты я хочу использовать в postfix
настройках своего сервера, отметив их ✘ или ✔.
н | операция | отправитель | получатель | возможные протоколы/порты |
---|---|---|---|---|
1 | "отправка по почте" | МУА | МСА | (✘) SMTP 25 (✘) SMTP 25 и STARTTLS (✘) SMTP 587 и STARTTLS (✔) SMTPS 465 и неявный TLS |
2 | "внутренний сервер" | МСА | МТА | / |
3... | "почтовая ретрансляция" | МТА | МТА | (✘) SMTP 25 (✘) SMTP 25 & STARTTLS (✔) SMTP 25 & STARTTLS & ДЭЙН |
н-2 | "внутренний сервер" | МТА | МДА | / |
н - 1 | "внутренний сервер" | МДА | РС | / |
н | "доступ к почтовому ящику" | РС | МУА | (✘) POP3 110 и STARTTLS (✘) POP3S 995 и неявный TLS(✘) IMAP 143 и STARTTLS (✔) IMAPS 993 и неявный TLS |
Прежде чем продолжить, я бы попросил вас согласиться или не согласиться с двумя предположениями:
ПРЕДПОЛОЖЕНИЕ А:
Я предполагаю, что изэтотстарый ответ, что Postfixуслуга 465
переименован в smtps
где-то по пути. Поэтому я используюуслуга smtps
для того, чтобы слушать"отправка по почте"SMTPS-порт 465
.
ПРЕДПОЛОЖЕНИЕ Б:
Верхняя часть моего /etc/postfix/master.cf
файла выглядит так:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_security_level=encrypt
-o smtpd_use_tls=yes
-o smtpd_tls_wrappermode=yes
-o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
-o smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
-o smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
...
Я читаюздесьчто:
postfix/smtpd
- это процесс-демон SMTP для"входящие сообщения на почте"и направляет его в соответствующее внутреннее местоположение.
postfix/smtp
- это процесс-демон SMTP для"исходящая корреспонденция"в мир.
Итак , теперь я предполагаю, что он postfix/smtpd
прослушивает порт465
"входящее письмо"от локальных пользователей и в порту 25
для"входящее письмо"отовсюду. Я также предполагаю, что это postfix/smtp
использует порт 25
, куда он отправляет"исходящая электронная почта".
ПРОБЛЕМА:
Когда я где-то настраивал Postfix, я отключил внутри целый раздел TLS, /etc/postfix/main.cf
потому что не хотел, чтобы глобальные настройки мешали моим настройкам для отдельных служб, которые я установил внутри /etc/postfix/master.cf
.
Как вы видите, я не использовал ни -o
одной опции для сервиса , хотя для сервиса smtp
я использовал много опций . Больше всего меня смущает то, что в официальной документации я могу найти много почти дублирующихся опций, таких как:-o
smtps
/etc/postfix/main.cf
Согласно цитируемому тексту я должен использовать:
- те, которые начинаются с
smtp_
for"исходящая корреспонденция" - те, которые начинаются с
smtpd_
for"входящая почта".
Если моя философия верна, то моя текущая настройка должна работать. Частично работает, потому что я могу добиться рукопожатия TLS 1.3 с помощью openssl
команды на другом компьютере, например:
┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
└─> openssl s_client -connect pis.eu:465 -tls1_3
CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tekpi-eu
verify return:1
---
Certificate chain
0 s:CN = tek-eu
i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----
< REMOVED FOR CLARITY >
-----END CERTIFICATE-----
subject=CN = tek-eu
issuer=CN = tek-eu
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1286 bytes and written 313 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID: 45F832A32F5F27CEAA41B271F28545ECA98DC1AC61F51A484123DD28B2535C30
Session-ID-ctx:
Resumption PSK: 3175AD1641D8D77511FD5C76508D339D01F5D1CE02DBF90F33FEBD334A7E76FD44B52808A846C281616469143977B6F1
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
< REMOVED FOR CLARITY >
Start Time: 1607602078
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
220 mail.pis.eu -------> "HELLO!"
Выше я использовал параметр -tls1_3
, который должен работать, потому что мой параметр конфигурации -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
должен запрещать любое рукопожатие, кроме TLS 1.2 и TLS 1.3. Но если изменить параметр -tls1_3
на -tls1
попытку рукопожатия TLS 1, то оно успешно!?
┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
└─> openssl s_client -connect pis.eu:465 -tls1
CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tek-eu
verify return:1
---
Certificate chain
0 s:CN = tek-eu
i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----
< REMOVED FOR CLARITY >
-----END CERTIFICATE-----
subject=CN = tek-eu
issuer=CN = tek-eu
---
No client certificate CA names sent
Peer signing digest: MD5-SHA1
Peer signature type: RSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1385 bytes and written 227 bytes
Verification error: self signed certificate
---
New, TLSv1.0, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1
Cipher : ECDHE-RSA-AES256-SHA
Session-ID: C1E39786A475DA48ED222EAB5247CCE57D49875AE9A442A73027FBE1F9BB7C4D
Session-ID-ctx:
Master-Key: 5900F37B79A7949871008A827904F2BA907F42EE8BBC73328CD49DF7E37AF2687C06B316922D7D76DDC36FA1DF912E7A
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
< REMOVED FOR CLARITY >
Start Time: 1607602884
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: yes
---
220 mail.pis.eu -------> "HELLO!"
Как это получилось? Что я делаю не так? В настоящее время в моей настройке есть только -o smtpd_
опции. Должен ли я также использовать -o smtp_
опции? Где мне их разместить?
Как видите, я в замешательстве...