이러한 유형의 OS 설정에 대해 대부분의 웹사이트에서 권장하는 지침에 따라 Postfix + SpamAssassin 설정을 수행했습니다. 기본적으로 나는 다음을 master.cf
추가하기 위해 내 것을 편집했습니다.
smtp inet n - - - - smtpd -o content_filter=spamassassin
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
SpamAssassin은 실제로 잘 작동하고 이메일이 필터링되지만 다음 사항을 발견했습니다. 과거에 SpamAssassin 이전에는 이메일이 내 서버로 전송되면 헤더에 다음과 같은 내용이 표시되었습니다.
Return-path: <[email protected]>
Envelope-to: <[email protected]>
Delivery-date: Wed, 02 Dec 2015 12:37:13 +0100
Received: from mail.sender-server.dev ...
by mail.my-server.dev
SpamAssassin 이후에는 다음이 표시됩니다.
Return-path: <[email protected]>
Envelope-to: <[email protected]>
Delivery-date: Wed, 02 Dec 2015 12:37:13 +0100
Received: from mail.my-server.dev ...
by mail.my-server.dev
Received: from
SpamAssassin을 활성화한 후 이메일이 실제로 내 서버에 도달하는 원본 서버가 변경된 것 같습니다 . 왜 이런 일이 발생합니까? 올바른 헤더를 표시하여 이메일을 필터링하면 이 문제를 해결할 수 없나요? 감사해요.
답변1
이것은 @tarleb의 조사와 도움을 받은 후의 최종 솔루션입니다.
내 메일 배달은 sendmail
내 이메일에 추가 헤더를 추가하는 프로그램을 통해 이루어집니다. Mitter(메일 필터)를 사용하면 들어오는 이메일을 필터링할 수 있어서 포기했지만 sendmail
, 배송을 Dovecot LDA로 변경하기로 결정했습니다.
내 원래 필터는 Postfix의 시작 부분에 있었습니다 master.cf
.
smtp inet n - - - - smtpd -o content_filter=spamassassin
그리고 파일 끝에서:
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
다음을 통해 Dovecot 로컬 배달을 사용하도록 파일 끝을 변경했습니다.
spamassassin unix - n n - - pipe
flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e
/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
이제 Postfix를 편집 main.cf
하고 다음을 추가합니다(선택 사항, 아래 (3) 확인).
spamassassin_destination_recipient_limit = 1
이제 귀하의 이메일은 헤더를 변경하지 않고 Dovecot LDA를 통해 전송됩니다. 궁금하신 분들을 위해 제 구성에 대한 몇 가지 세부정보를 알려드리겠습니다.
- 이것구성은 주소 지정/하위 주소 지정/수신자 구분 기호와 함께 사용할 수 있습니다.(다음으로 전송된 이메일은 받은편지함
[email protected]
으로 전송됩니다[email protected]
.) - 그래서 이 항목을 추가하면 도메인 이전의 모든 내용과 함께-d ${user}@${nexthop}
삭제됩니다 . 이 기능 을+
활성화하려면recipient_delimiter = +
;main.cf
- 내 플래그
flags=DROhu
는 예외를 추가하지 않지만 여기에서 이해할 수 있습니다.http://www.postfix.org/pipe.8.html; spamassassin_destination_recipient_limit = 1
각 수신자가 spamassassin에 의해 개별적으로 처리되도록 해야 합니다. 이는D
위의 플래그(헤더 포함 ) 로 인해 필요합니다X-Original-To
.이 플래그가 있지만 여러 대상을D
설정하지 않으면spamassassin_destination_recipient_limit = 1
이메일이 전송되지 않습니다!이 헤더에 관심이 없다면 플래그를 제거할 수 있지만 필수는 아닙니다.
편집: 보너스 콘텐츠 - 스팸을 Junk
폴더로 이동하세요!
Junk
스팸으로 감지된 이메일을 IMAP 폴더 로 이동하도록 Dovecot을 구성할 수도 있습니다 . 이것은 확실히 당신의 삶을 더 쉽게 만들어 줄 것입니다. 다음 단계를 따르세요.
폴더 편집
/etc/dovecot/conf.d/15-mailboxes.conf
및 주석 해제/추가 ( 가까운 섹션Junk
에 있어야 함 ):namespace inbox
mailbox Trash
mailbox Junk { special_use = \Junk }
설치 :
dovecot-sieve
apt-get install dovecot-sieve
다음 줄을 편집
/etc/dovecot/conf.d/90-sieve.conf
하고 주석을 추가하세요.#sieve = ~/.dovecot.sieve
다음으로 수정됨
/etc/dovecot/conf.d/90-plugin.conf
:plugin { sieve = /etc/dovecot/sieve/default.sieve }
편집
/etc/dovecot/conf.d/15-lda.conf
및/etc/dovecot/conf.d/20-lmtp.conf
일치:protocol lda/lmtp { # do not copy/paste this line! mail_plugins = $mail_plugins sieve }
경고하다: 선택 항목에 다른 설정이 있을 수 있으므로
protocol
그대로 두십시오.protocol lda/lmtp
파일의 줄이 변경되어 원래 내용이 유지됩니다.폴더 생성
/etc/dovecot/sieve/
/etc/dovecot/sieve/default.sieve
다음 내용으로 파일을 만듭니다 .require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; }
폴더 권한을 가상 이메일 사용자 및 그룹으로 변경합니다(예: )
chown vmail:vmail /etc/dovecot/sieve/ -R
. 이 비둘기를 놓치면 불평하게 될 것입니다!모든 것을 다시 시작하세요:
service postfix restart; service dovecot restart; service spamassassin restart
(외부 서버에서) 서버의 이메일 주소로 먼저 일반 이메일을 보낸 다음 제목이 .인 다른 이메일을 보내보세요
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
. 두 번째 이메일은Junk
폴더 로 들어가야 하고, 첫 번째 이메일은 받은 편지함으로 들어가야 합니다.
첫 번째 시도에서 작동하지 않으면 로그를 확인하고 tail -f /var/log/mail.log
실행 중에 이메일을 보내십시오. tail
좋은 작업 설정은 stored mail into mailbox 'INBOX'
또는 를 보고해야 합니다 stored mail into mailbox 'Junk'
.
답변2
이는 SMTP 서버가 메일을 처리하는 방법의 직접적인 결과입니다. 메일을 처리하는 모든 서버는 Received
메일을 처리할 때 새 헤더를 추가합니다(SMTP 서버에서 요구하는 대로).RFC 2821).
이것이 당신이 보는 것입니다. 이것스팸 암살자이 서비스는 필터 역할을 하여 postfix로부터 메일을 받고 그 결과를 다시 postfix로 보냅니다. 따라서 Postfix는 이메일을 두 번 받게 됩니다. Received
매번 헤더를 삽입합니다 . 그렇기 때문에 거기에 자신의 서버가 나열되어 있는 것을 볼 수 있습니다. 헤더에는 (Postfix, from userid 120)
사용자 ID가 debian-spamd
사용자에게 속한 위치와 유사한 내용이 포함될 수 있습니다.
나머지 메시지 헤더를 검사하면 Received
아래에 더 많은 헤더가 있음을 알 수 있습니다. 이제 이전 헤더가 더 숨겨져 있지만 여전히 남아 있습니다. 정보는 손실되지 않습니다.