Đây là giải pháp cuối cùng của tôi sau khi nghiên cứu và giúp đỡ từ @tarleb
Chuyển phát thư của tôi đã xảy ra qua sendmailchương trình, trong đó thêm một số tiêu đề bổ sung vào email của tôi. Tôi có thể sử dụng một bộ lọc (bộ lọc thư) để lọc email đến và bỏ việc sendmailsử dụng, tuy nhiên tôi đã quyết định đổi sang Dovecot LDA để gửi.
Bộ lọc ban đầu của tôi là, vào đầu Postfix master.cf:
smtp inet n - - - - smtpd -o content_filter=spamassassin
Và ở cuối tập tin:
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
Tôi đã thay đổi phần cuối của tệp để sử dụng phân phối cục bộ Dovecot bằng cách:
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}
Bây giờ chỉnh sửa Postfix's main.cfvà thêm (tùy chọn, kiểm tra (3) dưới đây):
spamassassin_destination_recipient_limit = 1
Bây giờ email của bạn sẽ được gửi qua Dovecot LDA mà không cần thay đổi tiêu đề. Đối với những người tò mò, đây là một số chi tiết về cấu hình của tôi:
- Cấu hình này có thể được sử dụng với các dấu phân cách địa chỉ cộng / địa chỉ phụ / người nhận (các địa chỉ email
user+nospam@example.comsẽ được gửi vào user@example.comhộp thư đến) - Đó là lý do tại sao tôi thêm -d ${user}@${nexthop}điều này sẽ xóa +và mọi thứ cho đến khi tên miền. Để kích hoạt tính năng này, hãy chắc chắn để thêm recipient_delimiter = +vào main.cf;
- Cờ của tôi
flags=DROhu, họ không thêm bất cứ điều gì bất thường nhưng chúng có thể được hiểu ở đây: http://www.postfix.org/pipe.8.html ;
spamassassin_destination_recipient_limit = 1được yêu cầu để đảm bảo rằng mọi người nhận đều được xử lý riêng lẻ bởi spamassassin. Điều này là bắt buộc do Dcờ ở trên (Bao gồm X-Original-Totiêu đề). Nếu bạn đã Dgắn cờ và bạn không đặt spamassassin_destination_recipient_limit = 1email với nhiều điểm đến sẽ không được gửi! Nếu bạn không quan tâm đến tiêu đề này, bạn có thể xóa cờ và điều này không cần thiết.
Chỉnh sửa: Phần thưởng nội dung - Di chuyển SPAM của bạn vào Junkthư mục!
Bạn cũng có thể định cấu hình Dovecot để di chuyển email được phát hiện dưới dạng SPAM sang Junkthư mục IMAP. Điều này sẽ làm cho cuộc sống của bạn dễ dàng hơn chắc chắn. Chỉ cần làm theo điều này:
Chỉnh sửa /etc/dovecot/conf.d/15-mailboxes.confvà bỏ ghi chú / thêm Junkthư mục với (nên ở namespace inboxphần gần mailbox Trash):
mailbox Junk {
special_use = \Junk
}
Cài đặt dovecot-sievevới apt-get install dovecot-sieve;
Chỉnh sửa /etc/dovecot/conf.d/90-sieve.confvà nhận xét dòng:#sieve = ~/.dovecot.sieve
Chỉnh sửa /etc/dovecot/conf.d/90-plugin.confthành:
plugin {
sieve = /etc/dovecot/sieve/default.sieve
}
Chỉnh sửa /etc/dovecot/conf.d/15-lda.confvà /etc/dovecot/conf.d/20-lmtp.confcho phù hợp:
protocol lda/lmtp { # do not copy/paste this line!
mail_plugins = $mail_plugins sieve
}
CẢNH BÁO : Bạn có thể có các cài đặt khác trong các protocollựa chọn, giữ chúng. Dòng protocol lda/lmtpthay đổi trong các tập tin, giữ bản gốc.
Tạo thư mục /etc/dovecot/sieve/
Tạo tập tin /etc/dovecot/sieve/default.sievevới nội dung này:
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
}
Thay đổi quyền thư mục cho người dùng và nhóm email ảo của bạn như : chown vmail:vmail /etc/dovecot/sieve/ -R. Nếu bạn bỏ lỡ dovecot này sẽ phàn nàn!
Khởi động lại mọi thứ: service postfix restart; service dovecot restart; service spamassassin restart
Hãy thử gửi email đến một số email trên máy chủ (từ máy chủ bên ngoài), đầu tiên là một email bình thường và sau đó là một email khác với chủ đề này : XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X. Email thứ hai nên vào Junkthư mục và email đầu tiên vào hộp thư đến của bạn.
Nếu điều này không hoạt động ở lần thử đầu tiên của bạn, hãy xem nhật ký: tail -f /var/log/mail.logvà gửi email trong khi tailđang chạy. Một thiết lập làm việc tốt nên báo cáo stored mail into mailbox 'INBOX'hoặc stored mail into mailbox 'Junk'.
Receivedtiêu đề nào khác , chỉ có cácX-Spam-*tiêu đề được thêm vào ... Tại sao và như thế nào?