Я установил и успешно настроил exim4 и sa-exim на моей установке Ubuntu LTS. Спам-сообщения успешно помечены:
X-SA-Exim-Connect-IP: 89.238.139.198
X-SA-Exim-Mail-From: hertaqcrqsaa@xxx
Subject: =?UTF-8?Q?F=C3=BCr_den_privaten_und_gesch=C3=A4ftlichen_Gebrauch:_=C3=B6konomische_LED-Lampen,_verbilligt?=
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.root42.de
X-Spam-Flag: YES
X-Spam-Level: **********
X-Spam-Status: Yes, score=10.3 required=5.0 tests=BAYES_60,HTML_IMAGE_ONLY_20,
HTML_MESSAGE,HTML_SHORT_LINK_IMG_3,RCVD_IN_SBL_CSS,SPF_PASS,
T_DKIM_INVALID,URIBL_ABUSE_SURBL,URIBL_BLOCKED,URIBL_DBL_SPAM
autolearn=no autolearn_force=no version=3.4.2
X-SA-Exim-Version: 4.2.1 (built Sun, 16 Aug 2015 09:47:16 +0000)
X-SA-Exim-Scanned: Yes (on xxx.xxxxxx.de)
Но, тем не менее, электронное письмо доставляется пользователю INBOX Maildir. Как я могу изменить это, чтобы перейти к .Spam Maildir пользователя?
Обнаружил это сам через превосходную Exim Wiki :
Прежде всего, вам нужно создать файл /etc/exim4/conf.d/router/899_exim4-config_local_user_spam
с таким содержанием:
### router/900_exim4-config_local_user_spam
#################################
# This router matches local user mailboxes. If the router fails, the error
# message is "Unknown user".
local_user_spam:
debug_print = "R: local_user_spam for $local_part@$domain"
driver = accept
domains = +local_domains
check_local_user
local_parts = !www:!root:!nobody:!postmaster:!abuse:!admin
transport = maildir_spam_delivery
condition = ${if def:h_X-Spam-Flag: {true}}
cannot_route_message = Unknown user
Это будет соответствовать ДО локального маршрутизатора пользователя, который имеет номер 900. Это гарантирует, что спам будет доставлен с использованием следующего транспорта.
Создайте транспорт в /etc/exim4/conf.d/transport/30_exim4-config_maildir_spam_delivery
с таким содержимым:
### transport/30_exim4-config_maildir_spam_delivery
#################################
# Use this instead of mail_spool if you want to to deliver to Maildir in
# home-directory - change the definition of LOCAL_DELIVERY
#
maildir_spam_delivery:
debug_print = "T: maildir_spam_delivery for $local_part@$domain"
driver = appendfile
.ifdef MAILDIR_HOME_MAILDIR_LOCATION
directory = MAILDIR_HOME_MAILDIR_LOCATION/.Junk
.else
directory = $home/Maildir/.Junk
.endif
.ifdef MAILDIR_HOME_CREATE_DIRECTORY
create_directory
.endif
.ifdef MAILDIR_HOME_CREATE_FILE
create_file = MAILDIR_HOME_CREATE_FILE
.endif
delivery_date_add
envelope_to_add
return_path_add
maildir_format
.ifdef MAILDIR_HOME_DIRECTORY_MODE
directory_mode = MAILDIR_HOME_DIRECTORY_MODE
.else
directory_mode = 0700
.endif
.ifdef MAILDIR_HOME_MODE
mode = MAILDIR_HOME_MODE
.else
mode = 0600
.endif
mode_fail_narrower = false
# This transport always chdirs to $home before trying to deliver. If
# $home is not accessible, this chdir fails and prevents delivery.
# If you are in a setup where home directories might not be
# accessible, uncomment the current_directory line below.
# current_directory = /
Это в основном копия транспорта по умолчанию maildir_home
, добавляющая только /.Junk
к имени maildir.
Я уверен, что exim4 может сделать это немного более элегантно с некоторыми if и else, но мой exim foo пока недостаточно хорош. Любые профессионалы exim могут присоединиться к этому решению.
Я не знаю, могут ли exim4 и sa-exim автоматически сделать это для вас. Кто-то другой может вмешаться в это.
Однако на компьютере пользователя в Thunderbird вы можете использовать Фильтры сообщений, чтобы перемещать спам-сообщения в папку спама. Создайте новый фильтр сообщений, например, так ... (если вы не хотите совпадать с X-Spam-Status, вы можете создать специальный флаг, например, X-Spam-Flag) ...