postfix에 TLS가 필요할 때 자동으로 알림을 보내시겠습니까?

postfix에 TLS가 필요할 때 자동으로 알림을 보내시겠습니까?

CentOS 7에 postfix를 설정하고 STARTTLS가 수신 메일을 수락하도록 요구하도록 구성했습니다. 어떤 이유로 서버가 TLS 암호화를 지원하지 않는 상황이 발생하여 STARTTLS가 발행되지 않고 이메일이 반송됩니다. 그래야 하는 것처럼요. 그러나 발신자는 메일 서버로부터 "배달할 수 없음" 메시지를 받는 경우가 많으며 어떤 조치를 취하는 것은 고사하고 무슨 일이 일어났는지 알 방법도 없는 경우가 많습니다.

보내는 서버는 일반적으로 응답을 FROM보내기 전에 메시지를 내보내므로 보낸 사람의 주소는 어딘가에서 사용 가능할 수 있습니다. Must issue a STARTTLS command first해당 정보를 수집하고 설명과 대체 주소 또는 문의 양식 링크가 포함된 자동 회신을 보낼 수 있는 유틸리티가 있습니까?

답변1

@F.sb가 말했듯이 Postfix 로그를 구문 분석하여 암호화되지 않은 이메일을 제출하는 보낸 사람 주소를 찾을 수 있습니다. 그러나 테스트 환경에서 Postfix가 smtpd_tls_security_level로 설정된 경우 encrypt(또는 동일하게 smtpd_enforce_tls로 설정된 경우 yes) 보낸 사람 주소를 기록하지 않는 것으로 나타났습니다. 따라서 로그에서 보낸 사람 주소를 가져오려면 smtpd_tls_security_level으로 설정해야 하며 may, 이 단계에서는 암호화되지 않은 메시지를 거부해야 합니다 RCPT TO. 이를 달성하려면 reject_plaintext_sessioninto smtpd_recipient_restrictionsplaintext_reject_code로 설정하십시오 530. 예를 들어:

# /etc/postfix/main.cf

smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/postfix/postfix.crt
smtpd_recipient_restrictions = reject_unauth_destination,reject_plaintext_session,permit
plaintext_reject_code = 530

rsyslog그런 다음 사용자 정의 실행 파일을 실행하고 전달하도록 구성할 수 있습니다 STDIN. 예를 들면 다음과 같습니다.

# /etc/rsyslog.d/postfix-logs.conf

module(load="omprog")

template(name="PostfixLogs" type="string" string="%syslogtag% %msg%\n")

:syslogfacility-text, isequal, "mail" action(type="omprog"
    binary="/usr/local/bin/postfix-tls-notify.sh"
    template="PostfixLogs")

sed이 사용자 정의 실행 파일 내에서 보낸 사람 주소를 캡처 하고 자동 회신을 보낼 수 있습니다 .

# /usr/local/bin/postfix-tls-notify.sh

/usr/bin/sed -run 's/^postfix\/smtpd(|\[[0-9]+\]):\s+noqueue:\s+reject:\s+rcpt\s+from\s+[^;]+session\s+encryption\s+is\s+required;\s+from=<([^>; ]+)>.*$/\2/ip' | while read sender; do
    /usr/bin/mailx -s 'Automatic notification' "${sender}" <<'MESSAGE'

    Please, send your inquiries by using https://www.example.com/contact.html

MESSAGE
done

참고: SELinux는 rsyslog로컬 메시지가 다음을 통해 전송되는 것을 방지할 수 있습니다. 이런 일이 발생하면 명령을 실행하여 허용 모드에서 실행되도록 구성하십시오.sendmailmailxrsyslogsemanage permissive -a syslogd_t

답변2

일부 postfix 로그 파서를 사용하여 이 오류를 감지한 다음 보낸 사람에게 자동 응답 이메일을 보낼 수 있습니다.

암호화를 옵션으로 고려하세요. 설정을 통해 시행하지 않는 것이 좋습니다.smtpd_enforce_tls = yes

참고로 공용 SMTP 서버에 이 규칙을 적용하는 것은 규칙에 위배됩니다.RFC 3207

관련 정보