Назад | Перейти на главную страницу

Отправлять спам в специальную папку с помощью постфикса

У меня есть постфиксный сервер, на котором запущены 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;
}