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

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


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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.