Postfix를 사용하여 발신 SMTP에 대한 암호화 강제


22

누구든지 Postfix에게 발신 메일을 암호화하도록 지시하는 방법을 알고 있습니까?

수신시 암호화를 사용하도록 구성했지만 발신 메일로는 암호화를 수행 할 수 없습니다. 이것은 내 main.cf파일입니다.

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

답변:


30

smtp_tls_security_level = 암호화 또는 smtp_enforce_tls = yes

특정 목적지의 경우 smtp_tls_policy_maps를 사용할 수 있습니다

smtp_use_tls = yessmtp_enforce_tls = yes 는 더 이상 사용되지 않습니다. Postfix 2.3 이상에서는 smtp_tls_security_level을 대신 사용 하십시오 .

주의 : TLS 암호화를 적용하면 TLS가 구성되지 않은 SMTP 호스트에 대한 메일 배달 문제가 발생할 수 있습니다. TLS가 구성된 내부 서버로만 메일을 배달하는 데 서버를 사용하는 경우에는 문제가되지 않습니다. 그러나 서버를 사용하여 메일을 공용 서버로 전달하는 경우 모든 서버에 TLS 지원이 있다고 가정 할 수 없습니다. 이 경우 smtp_tls_security_level = may를 사용하십시오.


1
소프트웨어 메일 클라이언트에서 보내는 메일 서버로만 적용하고 싶다고 생각합니다. 메일 서버에 메일 서버에서 (자신의 의견이 23시 26분에서 3월 7일 '10에 게시 참조)하지 않음
배짱이

4

이 아이디어는 사용자가 암호화 된 발신 smtp 서버로 이메일 클라이언트를 구성하도록하는 것입니다. 현재 conf에서 Thunderbird는 smtp 서버와 일반 텍스트로 통신 할 수있는 옵션을 남겨 둡니다.

소스 코드를 다시 컴파일하지 않고 Thunderbird에서 옵션을 비활성화 할 수는 없지만 암호화를 적용하도록 postfix stmpd 데몬 (클라이언트에서 메일을 수신)을 구성 할 수 있습니다. 그렇게하려면 smtpd_tls_security_level = encrypt를 사용하십시오 . 이는 더 이상 사용되지 않는 옵션 smtpd_use_tls = yessmtp_enforce_tls = yes같습니다 . smtpd_tls_security_level = encryptsmtp_enforce_tls = yes는 smtpd_tls_auth_only = yes를 나타 냅니다.

smtpd_tls_security_level = encrypt 에 대한 접미사 문서에서

필수 TLS 암호화 : SMTP 클라이언트에 대한 STARTTLS 지원을 알리고 클라이언트가 TLS 암호화를 사용해야합니다. RFC 2487 에 따르면 공개적으로 참조되는 SMTP 서버의 경우에는 적용해서는 안됩니다. 대신이 옵션은 전용 서버에서만 사용해야합니다.

공용 서버를 사용하는 경우 포트 25 / tcp에서 이메일 암호화를 시행 할 수 없습니다. 더 나은 솔루션은 클라이언트에서 postfix smtpd 데몬 포트 25 / tcp로 메일 배달을 비활성화하고 postfix 제출 데몬 ( 포트 587 / tcp에서 실행 되는 RFC 4409에 설명 된 로컬 클라이언트에서 메일을 수신하는 데만 사용되는 특수 postfix smtpd 데몬)을 활성화하는 것입니다. . 이를 수행하려면 smtpd_tls_security_level = may를 설정 permit_sasl_authenticated하고 smtpd_recipient_restrictions 에서 제거하십시오 . 에 master.cf제출 데몬에 대한 주석 라인 :

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

궁금한 점은 TLS를 사용하지 않는다는 것을 어떻게 알 수 있습니까? smtp_tls_loglevel (smtpd_tls_loglevel과 다른)의 기본값은 0이므로 기본적으로 Postfix의 로그에서 아웃 바운드 메일에 대한 TLS 협상에 대한 내용은 표시되지 않습니다.

smtp_tls_loglevel = 1 이상을 설정하면 메시지가 전송 될 때 로그에 다음과 같은 줄이 나타납니다.

3 월 7 일 22:28:10 랙 postfix / smtp [27400] : 클라이언트 측 TLS 엔진 초기화

나는 게으르고 있음을 인정하지만 그 구성 (및 위의 ms 참고 사항)을 제외하면 구성이 한 눈에 잘 보입니다.


1
Simon은 TLS를 사용하여 모든 메일을 암호화하려고합니다. smtp_use_tls = yes는 원격 서버에서 지원하는 경우 TLS의 접미사 사용을 허용합니다 (smtp_use_tls = yes는 smtp_tls_security_level = may와 동일 함). 발신 메일이 TLS를 사용하여 암호화 된 경우 적절한 메시지를 메일 로그에 저장해야합니다. smtp_ * 옵션은 smtpd_ *와 다른 postfix 데몬 용입니다. smtpd_ *는 원격 서버에서 메일을 수신하고 smtp_ *는 메일을 원격 서버로 전달하는 데 사용됩니다.
sumar

실제로 나는 그 질문이 조금 모호하다고 생각합니다. 적어도 Simon이 Postfix가 TLS를 요구하는지 또는 수신자의 서버가 TLS를 지원하는 경우 TLS를 사용하는지 여부를 알 수는 없습니다.
jlupolt

1
당신의 말에 감사합니다, 아마 나에게 잘 설명하지 못했습니다. 이 아이디어는 사용자가 암호화 된 발신 smtp 서버로 이메일 클라이언트를 구성하도록하는 것입니다. 현재 conf에서 Thunderbird는 smtp 서버와 일반 텍스트로 통신 할 수있는 옵션을 남겨 둡니다. 이것을 피할 수 있습니까? 미리 감사드립니다, 사이먼
Simon

TLS가 활성화되어 있는지 확인하는 쉬운 방법은 수신 측에서 원시 메시지를보고 인증 결과를 찾는 것입니다. domainkeys = neutral (시그널 없음); 어떤는 사용하지 않는 TLS를 나타냅니다
스콧 Stensland에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.