У меня есть постфиксный сервер, на котором запущены amavis и SpamAssassin, которые помогают фильтровать спам. Сообщения, которые определяются как спам, при доставке в Maildir пользователя выглядят следующим образом:
From tom@tom-mint Fri Mar 15 01:46:20 2013 Return-Path: <tom@tom-mint> X-Original-To: tom@my-server.com Delivered-To: tom@my-server.com X-Virus-Scanned: Debian amavisd-new at my-server.com X-Spam-Flag: YES X-Spam-Score: 6.463 X-Spam-Level: ****** X-Spam-Status: Yes, score=6.463 tagged_above=2 required=6.31 tests=[DRUGS_ERECTILE=2.221, FH_FROMEML_NOTLD=0.18, FSL_HELO_NON_FQDN_1=0.001, HELO_NO_DOMAIN=0.001, RCVD_IN_PBL=3.558, RDNS_DYNAMIC=0.363, TO_NO_BRKTS_DYNIP=0.139] autolearn=no Date: Fri, 15 Mar 2013 01:46:19 -0400 To: tom@my-server.com Subject: ***SPAM*** hello User-Agent: Heirloom mailx 12.5 6/20/10 Content-Type: text/plain; charset=us-ascii From: tom@tom-mint (Tom) Status: RO buy some viagra!
Обратите особое внимание на тему, перед которой стоит ***SPAM***
, а X-Spam-Flag: YES
заголовок.
Как лучше всего настроить postfix
хранить эти сообщения в специальной папке нежелательной почты?
Судя по моему исследованию, мне кажется, что для этого мне понадобится другой инструмент доставки почты, чем postfix, но я не уверен, какой подход лучше. Кажется, что существует много устаревшей информации, и мне интересно, может ли postfix помещать сообщения в папку или нет.
Все почтовые каталоги - это Maildir.
Беглое прочтение страницы руководства агента локальной доставки postfix local (8), как и ожидалось, не показывает намеков на этот тип возможностей. Такие задачи обычно передаются в procmail (возможно, через директиву mailbox_command), которая может обрабатывать описанную вами задачу, управляя кухонной мойкой на стороне. Обратной стороной procmail является формат файла конфигурации, гибкость и масса примеров, которые легко найти. Не знаю, появилось ли в последнее время что-нибудь лучше, чем procmail.
За свои деньги, однако, даже если бы я нашел способ заставить MTA делать то, что вы хотите, я бы не пошел по этому пути, потому что у такого рода вещей для сортировки почты есть способ перебрасывания и нет MTA (о котором я знаю: возможно, exchange делает, кто знает) может хорошо работать, будучи также гибким обработчиком сообщений / агентом доставки.
Это рецепт procmail, который будет делать то, что вы хотите, на основе единственного содержимого заголовка (где DEFAULT - это каталог доставки, часто что-то вроде $ HOME / Mail /):
:0
* ^X-Spam-Flag: YES
$DEFAULT/.Spam/
Редактировать: (Это предполагает формат почтового ящика maildir, как указано в комментарии ниже. Пропускайте последнюю косую черту при использовании mbox)
Как сказал Alien Life Form, это работа для procmail. Это не замена локальному агенту доставки почтового сервера; это отдельный процесс, который будет называться после MDA сделал свою работу.
Каждому пользователю, который хочет, чтобы procmail сортировал свою почту, необходимо создать файл с именем .forward
в их домашнем каталоге. Этот файл должен содержать следующее:
"|exec /usr/local/bin/procmail || exit 75"
в комплекте с "
подписать и все.
ALF уже опубликовал базовый .procmail
файл, который отсортирует почту, помеченную как спам, в отдельную папку.
Какой у вас агент доставки почты (см. Main.cf mailbox_command)? Если MDA - это dovecot, он поддерживает стандарт Sieve IETF (rfc5228), который может делать намного больше, чем procmail, не открывая возможных дыр в безопасности. НЕ привязывайте procmail к postfix / dovecot, sieve полностью интегрирован. Если вы используете Courier, то вам подойдет procmail. Однако вы найдете программы sieve / sievec от Pigeonhole быстрее и чище.
Ниже приведен простой скрипт сита для распознавания вашего спам-заголовка и помещения сообщения в файл корзины.
require "fileinto";
if header :comparator "i;ascii-casemap" :contains "Subject" "**SPAM**"
{
fileinto "Trash";
stop;
}