postfix-spamassassin-dovecot이 왜 이렇게 설정되어 있나요?

postfix-spamassassin-dovecot이 왜 이렇게 설정되어 있나요?

블랙리스트가 충분히 효과적이지 않았기 때문에 최근 내 메일 서버에 spamassassin을 추가했습니다.

명확히 하기 위해: 저는 SMTP용 Postfix + LDA용 Dovecot, 그레이리스팅용 postgrey, 속도 제한용 postfwd를 사용하고 있습니다.

Spamassassin을 추가하려면 다음 가이드를 사용하세요.https://www.digitalocean.com/community/tutorials/how-to-configure-a-mail-server-using-postfix-dovecot-mysql-and-spamassassin작동하지만 왜 이런 일이 발생하는지 이해하지 못합니다. 나를 괴롭히는 것은 master.cf입니다.

smtp       inet  n       -       y       -       -       smtpd
-o content_filter=spamassassin

dovecot unix    -       n       n       -       -      pipe
  flags=DRhu user=virtual:virtual argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -m ${extension}

spamassassin unix -     n       n       -       -       pipe
user=debian-spamd argv=/usr/bin/spamc -f -e  
/usr/sbin/sendmail -oi -f ${sender} ${recipient}

왜 sendmail이 갑자기 관련되었는지 이해할 수 없습니다. 좀 더 정확하게 설정하는 방법이 있나요?

postconf -n필요할 경우를 대비해 이것도 내 것입니다 .

append_at_myorigin = yes
biff = no
broken_sasl_auth_clients = yes
default_destination_concurrency_limit = 1
delay_warning_time = 8h
disable_vrfy_command = yes
dovecot_destination_concurrency_limit = 1
dovecot_destination_recipient_limit = 1
enable_original_recipient = yes
local_destination_concurrency_limit = 1
mailbox_size_limit = 100000000
maximal_queue_lifetime = 6d
message_size_limit = 52428800
myhostname = REDACTED
myorigin = /etc/mailname
smtp_helo_name = REDACTED
smtp_use_tls = yes
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_delay_reject = no
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10040 permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org=127.0.0.[2..11], reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, check_policy_service inet:127.0.0.1:10023
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, reject_unauth_pipelining
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = REDACTED
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
smtpd_soft_error_limit = 5
smtpd_tls_cert_file = REDACTED
smtpd_tls_dh1024_param_file = /etc/ssl/dhparams.pem
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
smtpd_tls_key_file = REDACTED
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
tls_random_source = dev:/dev/urandom
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_transport = dovecot

답변1

상표가 큰 성공을 거두면 가장 잘 알려진 사물의 일반 이름이 될 수 있습니다. /usr/sbin/sendmailLinux 및 Unix 시스템의 명령에서도 매우 유사한 상황이 발생합니다.

Postfix가 설치되면 /usr/sbin/sendmail실제로는 Sendmail이 아니며 Sendmail과 동일한 인터페이스(즉, 동일한 옵션 및 파이프 규칙)를 제공하는 Postfix의 구성 요소일 뿐입니다.

Postfix는 원래 Sendmail을 대체하도록 설계되었습니다. 많은 프로그램이 /usr/sbin/sendmail잘 알려진 옵션을 사용하여 메일 하위 시스템을 호출하고 콘텐츠를 메일 하위 시스템으로 전송함으로써 메일 하위 시스템과 상호 작용하는 것으로 나타났습니다 . 따라서 Postfix도 이를 지원해야 합니다.

spamcSpamassassin을 사용하는 경우 메시지는 스팸 탐지를 위해 전달되어야 합니다 . 적어도 스팸 검사가 수행되었음을 나타내는 헤더와 그 결과를 메시지에 추가하므로(메시지가 스팸인 경우 메시지 내용 시작 부분에 알림을 표시함) spamc메시지는 Postfix로 다시 전달되어야 합니다. 최종 배송을 위해

Postfix는 "파이프"를 다음과 같이 간주합니다.운송 방법, 즉 메시지가 로 전송되면 spamcPostfix는 해당 시점에서 작업이 완료된 것으로 간주합니다. 따라서 스팸이 ​​확인된 메시지는 Postfix 처리에 다시 삽입되어야 합니다. 이것이 바로 이 sendmail명령이 수행하는 작업입니다.

content_filter키워드의 기능은 생각보다 적습니다. 단지 Postfix에게 들어오는 메시지를 smtpd특정 전송 방법으로 전달하도록 지시하는 것뿐입니다.자동으로 아무것도 반환될 것으로 예상하지 않습니다.content_filter 전송 방법이 출력 없이 메시지를 삼키면 Postfix의 작업이 완료된 것입니다. 메시지가 필터를 통과한 후에 남은 것이 있으면 처리를 위해 다시 보내는 것이 필터의 임무입니다.

동일한 목표를 달성할 수 있는 다른 방법이 하나 이상 있습니다.sendmail하지만 결국 스팸 검사 후 메시지를 다시 삽입하는 명령을 사용 하게 됩니다 .

spamc이 Postfix가 수신 메일만 처리한다고 확신하는 경우 메시지를 Dovecot에 직접 전달하도록 구성할 수 있습니다 .

답변2

Sendmail은 관련되지 않습니다. 이것은 역사적인 이유와 호환성 때문에 접미사가 붙은 실행 파일일 뿐입니다.

매뉴얼 페이지를 확인하십시오:

SENDMAIL(1)                                       General Commands Manual 

NAME
       sendmail - Postfix to Sendmail compatibility interface

SYNOPSIS
       sendmail [option ...] [recipient ...]
[...]

편집 : (댓글 뒤에 추가됨)

dovecot LDA로 이를 변경할 수 있지만 물론 현지 배송에만 작동합니다. 스팸메일은 물론 발신 이메일도 확인할 수 있지만 비둘기장에서는 작동하지 않습니다. 전체 면책조항: 모든 구성을 확인하지 않았습니다. :)

관련 정보