Wymuszanie szyfrowania dla wychodzącego SMTP z Postfix

23

Czy ktoś wie, jak powiedzieć Postfix, aby szyfrował pocztę wychodzącą?

Skonfigurowałem go do używania szyfrowania przy odbiorze, ale nie mogę tego zrobić z pocztą wychodzącą. To jest mój main.cfplik:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Szymon, Szymek
źródło

Odpowiedzi:

30

smtp_tls_security_level = szyfruj lub smtp_enforce_tls = tak

W przypadku określonych miejsc docelowych możesz użyć smtp_tls_policy_maps

smtp_use_tls = yes i smtp_enforce_tls = yes są przestarzałe. W wersji Postfix 2.3 i nowszych użyj zamiast tego smtp_tls_security_level .

Pamiętaj: wymuszanie szyfrowania TLS może powodować problemy z dostarczaniem poczty dla hosta SMTP, który nie ma skonfigurowanego TLS. Jeśli serwer jest używany do dostarczania wiadomości e-mail tylko na wewnętrzny serwer ze skonfigurowanym TLS, w takim przypadku nie stanowi to problemu. Ale jeśli serwer służy do dostarczania poczty do serwerów publicznych, nie można założyć, że wszystkie serwery obsługują protokół TLS. W takim przypadku użyj smtp_tls_security_level = may

sumar
źródło
1
Myślę, że on chce tylko wymusić to od klienta pocztowego oprogramowania do wysyłającego serwera pocztowego. Nie od mailserver do mailserver (patrz jego komentarz opublikowany 7 marca o 10:23)
Cojones
4

Chodzi o to, aby zmusić użytkowników do skonfigurowania swoich klientów e-mail z szyfrowanym wychodzącym serwerem smtp. Przy obecnym conf Thunderbird pozostawia im opcję komunikacji z serwerem smtp zwykłym tekstem ...

Nie można wyłączyć opcji w Thunderbirdie bez ponownej kompilacji kodu źródłowego, ale można skonfigurować demona stmpd Postfix (który odbiera pocztę od klientów) w celu wymuszenia szyfrowania. Aby to zrobić, użyj smtpd_tls_security_level = encrypt , co odpowiada przestarzałym opcjom smtpd_use_tls = yes i smtp_enforce_tls = yes . smtpd_tls_security_level = szyfruj i smtp_enforce_tls = tak oznacza smtpd_tls_auth_only = tak

Z dokumentacji Postfiksa o smtpd_tls_security_level = szyfruj

Obowiązkowe szyfrowanie TLS: ogłaszaj obsługę STARTTLS klientom SMTP i wymagaj, aby klienci używali szyfrowania TLS. Zgodnie z RFC 2487 NIE WOLNO go stosować w przypadku publicznego serwera SMTP. Zamiast tego tej opcji należy używać tylko na serwerach dedykowanych.

Jeśli korzystasz z serwera publicznego, nie możesz wymusić szyfrowania wiadomości e-mail na porcie 25 / tcp. Lepszym rozwiązaniem jest wyłączenie dostarczania poczty przez postfix smtpd demon port 25 / tcp od klientów i włączenie demona wysyłania postfix (który jest specjalnym demonem posttix smtpd używanym tylko do odbierania poczty od lokalnych klientów opisanych w RFC 4409 działającym na porcie 587 / tcp) . Aby to zrobić, ustaw smtpd_tls_security_level = may i usuń permit_sasl_authenticatedz smtpd_recipient_restrictions . W master.cfwierszu komentującym o demonie wysyłania:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
sumar
źródło
1

Ciekawe, jak mówisz, że nie używa TLS? Domyślna wartość dla smtp_tls_loglevel (która różni się od smtpd_tls_loglevel) to 0, więc domyślnie nie zobaczysz nic o negocjacjach TLS dla poczty wychodzącej w logach Postfix.

Jeśli ustawisz smtp_tls_loglevel = 1 lub nowszy, w dzienniku powinna pojawić się taka linia, gdy wiadomość zostanie wysłana:

7 marca 22:28:10 rack postfix / smtp [27400]: inicjowanie silnika TLS po stronie klienta

Przyznaję, że jestem leniwy, ale poza tym (i uwagi pani powyżej) konfiguracja wygląda mi dobrze na pierwszy rzut oka.

jlupolt
źródło
1
Zrozumiałem, że Simon chce wymusić szyfrowanie całej poczty za pomocą TLS. smtp_use_tls = yes zezwala na użycie TLS w postfiksie, jeśli zdalny serwer go obsługuje (smtp_use_tls = yes jest równoważne smtp_tls_security_level = może). Odpowiednia wiadomość powinna zostać umieszczona w maillogu, jeśli poczta wychodząca została zaszyfrowana przy użyciu TLS. Masz rację, że opcje smtp_ * dotyczą innego demona Postfiksa niż smtpd_ * (smtpd_ * służy do odbierania wiadomości e-mail od zdalnych serwerów, smtp_ * służy do dostarczania wiadomości e-mail do zdalnych serwerów).
sumar
Właściwie myślę, że pytanie może być trochę niejednoznaczne. Przynajmniej nie wiem, czy Simon chce, aby Postfix wymagał TLS, czy po prostu go użyje, jeśli serwer odbiorcy go obsługuje.
jlupolt
1
Dzięki za twoje słowa, prawdopodobnie nie wyjaśniłem mi dobrze. Chodzi o to, aby zmusić użytkowników do skonfigurowania swoich klientów e-mail z szyfrowanym wychodzącym serwerem smtp. Przy obecnym conf Thunderbird pozostawia im opcję komunikacji z serwerem smtp zwykłym tekstem ... czy można tego uniknąć? Z góry dziękuję, Simon.
Simon
Prostym sposobem na stwierdzenie, czy TLS jest aktywny, jest spojrzenie na nieprzetworzoną wiadomość po stronie odbiorczej i poszukiwanie wyników uwierzytelnienia: klucze domeny = neutralne (bez podpisu); Co wskazuje, że nie używa TLS
Scott Stensland