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

Постфиксный отказ от спама в очереди с помощью amavis без отправки возврата на OS X Server

Это стандартная конфигурация почты сервера OS X 5.2, которую я пытаюсь изменить, чтобы она отклоняла спам-сообщение с "554 5.7.0 Reject" перед его принятием без отправки отправителю дополнительных уведомлений о недоставке. Он настроен на прием спама с сообщением «250 2.7.0 Ok», а затем на его удаление или карантин сразу после установки. Обычно это делается с помощью

$final_spam_destiny       = D_REJECT;
$warnspamsender = 0; (probably not necessary)

и может быть настроен с помощью

$sa_dsn_cutoff_level = X;
$sa_crediblefrom_dsn_cutoff_level = X;

Проблема, с которой я столкнулся, заключается в том, что, несмотря на то, что эти уровни отсечения намного ниже, чем фактическая оценка спама для конкретного сообщения, DSN / отказов все еще проходит. Выглядит это так:

Oct 25 11:52:18 mailbox postfix/smtpd[52962]: 1CD504D13C96: client=mail.informark.co.ua[85.25.13.92]
Oct 25 11:52:18 mailbox postfix/cleanup[53010]: 1CD504D13C96: message-id=<11a201d22e97$126f7740$2adb3d4f@ynmyfnj>
Oct 25 11:52:19 mailbox postfix/qmgr[52740]: 1CD504D13C96: from=<ynmyfnj@informark.co.ua>, size=145530, nrcpt=1 (queue active)
Oct 25 11:52:20 mailbox postfix/smtp[53011]: 1CD504D13C96: to=<xxx@xxx.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=2.2, delays=1.1/0/0.02/1, dsn=5.7.0, status=bounced (host 127.0.0.1[127.0.0.1] said: 554 5.7.0 Reject, id=52765-01 - spam (in reply to end of DATA command))
Oct 25 11:52:20 mailbox postfix/bounce[53022]: 1CD504D13C96: sender non-delivery notification: 4B9804D13CB0
Oct 25 11:52:20 mailbox postfix/qmgr[52740]: 1CD504D13C96: removed

Oct 25 11:52:20 mailbox postfix/cleanup[53010]: 4B9804D13CB0: message-id=<20161025085220.4B9804D13CB0@xxx.xxx.com>
Oct 25 11:52:20 mailbox postfix/qmgr[52740]: 4B9804D13CB0: from=<>, size=3019, nrcpt=1 (queue active)
Oct 25 11:52:20 mailbox postfix/bounce[53022]: 1CD504D13C96: sender non-delivery notification: 4B9804D13CB0
Oct 25 11:52:20 mailbox postfix/smtp[53015]: 4B9804D13CB0: to=<ynmyfnj@informark.co.ua>, relay=mail.informark.co.ua[85.25.13.92]:25, delay=0.58, delays=0/0/0.26/0.32, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 9145D8C8CCC)
Oct 25 11:52:20 mailbox postfix/qmgr[52740]: 4B9804D13CB0: removed

и соответствующая часть из amavis.log (уровень отладки 5) выглядит так:

lookup [forward_method] => true,  "xxx@xxx.com" matches, result="smtp:[127.0.0.1]:10025", matching_key="(opaque:smtp:[127.0.0.1]:10025)"
delivery method is 1, recips: xxx@xxx.com
get_deadline quar+notif - deadline in 479.0 s, set to 288.000 s
prolong_timer quar+notif: timer 288, was 288, deadline in 479.0 s
DSN: sender NOT credible, SA: 15.417, <ynmyfnj@informark.co.ua>
lookup: (scalar) matches, result="-100"
lookup [spam_dsn_cutoff_level_bysender] => true,  "ynmyfnj@informark.co.ua" matches, result="-100", matching_key="(constant:-100)"
dsn: . 554 Spam <ynmyfnj@informark.co.ua> -> <xxx@xxx.com>: on_succ=0, on_dly=1, on_fail=1, never=0, warn_sender=, DSN_passed_on=, destiny=-3, mta_resp: "554 5.7.0 Reject, id=52765-01 - spam"
DSN: FAIL . 554 Spam, status propagated back: <ynmyfnj@informark.co.ua> -> <xxx@xxx.com>
delivery_status_notification: notif 0 bytes, suppressed: no
one_response_for_all, per_recip_capable: N, suppressed: N
one_response_for_all <ynmyfnj@informark.co.ua>: REJECTs, '554 5.7.0 Reject, id=52765-01 - spam'
notif=N, suppressed=0, ndn_needed=, exit=69, 554 5.7.0 Reject, id=52765-01 - spam
get_deadline delivery-notification - deadline in 479.0 s, set to 288.000 s
prolong_timer delivery-notification: timer 288, was 288, deadline in 479.0 s
status counters: InMsgsStatus{Rejected,RejectedInbound}
get_deadline snmp-counters - deadline in 479.0 s, set to 288.000 s
prolong_timer snmp-counters: timer 288, was 288, deadline in 479.0 s
orcpt_encode rfc822, xxx@xxx.com, smtputf8
oldest_public_ip_addr_from_received: 178.17.170.60
Blocked SPAM {RejectedInbound}, [85.25.13.92]:44462 [178.17.170.60] <ynmyfnj@informark.co.ua> -> <xxx@xxx.com>, Queue-ID: 1CD504D13C96, Message-ID: <11a201d22e97$126f7740$2adb3d4f@ynmyfnj>, mail_id: N0710n9hpdxw, Hits: 15.417, size: 145530, 1021 ms
get_deadline main_log_entry - deadline in 479.0 s, set to 288.000 s
prolong_timer main_log_entry: timer 288, was 288, deadline in 479.0 s
TIMING-SA total 817 ms - parse: 8 (1.0%), extract_message_metadata: 55 (6.7%), get_uri_detail_list: 1.42 (0.2%), tests_pri_-1000: 32 (3.9%), tests_pri_-950: 1.05 (0.1%), tests_pri_-900: 1.13 (0.1%), tests_pri_-400: 26 (3.1%), check_bayes: 24 (2.9%), b_tokenize: 11 (1.3%), b_tok_get_all: 3.5 (0.4%), b_comp_prob: 4.4 (0.5%), b_tok_touch_all: 0.80 (0.1%), b_finish: 1.12 (0.1%), tests_pri_0: 665 (81.4%), check_dkim_adsp: 479 (58.6%), check_spf: 43 (5.3%), poll_dns_idle: 0.28 (0.0%), check_pyzor: 0.25 (0.0%), tests_pri_500: 5 (0.7%), get_report: 0.77 (0.1%)
updating snmp variables in BDB
get_deadline check done - deadline in 479.0 s, set to 288.000 s
prolong_timer check done: timer 288, was 288, deadline in 479.0 s
sending SMTP response: "554 5.7.0 Reject, id=52765-01 - spam"
ESMTP> 554 5.7.0 Reject, id=52765-01 - spam
...
ESMTP< QUIT\r\n
...
ESMTP> 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel

В результате, несмотря на явное указание amavis / postfix НЕ отправлять сообщения о недоставке на поддельный адрес электронной почты и даже о том, что amavis подтверждает мое желание там, сообщения о сбоях все равно отправляются. Я предполагаю, что ключевым словом в журналах является слово «подавлено», которое означает «нет» и «0» вместо «да» и «1», как я видел в журналах amavis в другом месте в Интернете.

Итак, вопрос в том, что я делаю не так, и может ли что-то еще мешать настройке, и я также хотел бы знать, как лучше всего это отладить. Очевидно, что утверждения в журнале amavis противоречивы.

Проблема здесь в том, что сообщение отклоняется не postfix, а amavis. Вот стандартный поток входящих сообщений:

  1. postfix получает сообщение от отправляющего MTA (или спам-бота)
  2. postfix пересылает (или пытается переслать) сообщение на amaviz (на порт 10024)
  3. amaviz пересылает сообщение обратно в postfix
  4. postfix доставляет сообщение cyrus (который обрабатывает почтовые ящики на сервере OS X)

В вашем случае происходит то, что postfix получает сообщение (шаг 1), но amaviz отклоняет его (на шаге 2), поэтому postfix генерирует сообщение о недоставке. См. Записи журнала, такие как «to = <xxx@xxx.com>, relay = 127.0.0.1 [127.0.0.1]»:10024, задержка = 2.2, задержки = 1.1 / 0 / 0.02 / 1, dsn = 5.7.0, status = bounced (хост 127.0.0.1 [127.0.0.1] сказал: 554 5.7.0 Отклонить, id = 52765-01 - спам (в ответ на конец команды DATA)) ". Обратите внимание, что это постфиксная отправка на localhost: 10024 (amaviz), а постфикс - это MTA, получающий отклонение 554.

Как только postfix получил сообщение, отклонять его уже поздно; вы действительно можете только бросить или передать это. Вот почему полезны черные и серые списки; они не такие точные, как сканер контента, но применяются постфиксом перед он получил сообщение и, следовательно, разрешил истинный отказ.

Решение для включения фильтрации перед очередью с помощью amavisd-new в OS X 10.11 довольно простое, поскольку большая часть работы уже проделана Apple, так что здесь это на тот случай, если кто-то захочет реализовать его на своем собственном сервере OS X. это страница помогла мне пройти через это.

Необходимо сделать три вещи, но сначала сделайте резервную копию файлов конфигурации! Вы можете сделать это с помощью

cp -Rp /Library/Server/Mail/config /Library/Server/Mail/config_backup

  1. /Library/Server/Mail/config/postfix/master.cf необходимо отредактировать. Найдите строку, содержащую

smtpd pass - - n - - smtpd

Чуть ниже этой строки вы должны добавить:

-o smtpd_proxy_filter=127.0.0.1:10024

  1. /Library/Server/Mail/config/amavisd/amavisd.conf необходимо отредактировать.

найди линию

$final_spam_destiny = D_DISCARD;

и замените его на

$final_spam_destiny = D_REJECT;

Вы также можете установить D_REJECT для $ final_virus_destiny.

  1. Установите флаг неизменяемости пользователя на master.cf, поскольку серверный администратор OS X перезапишет файл при следующем перезапуске почтового сервера:

chflags uchg /Library/Server/Mail/config/postfix/master.cf

после этого перезапустите почтовый сервер

serveradmin stop mail; serveradmin start mail и посмотрите журналы своей почты, чтобы убедиться, что вы все сделали правильно:

tail -f /var/log/mail.log

и только в случае вы хотите изменить / настроить конфигурацию:

chflags nouchg /Library/Server/Mail/config/postfix/master.cf

Надеюсь, это поможет кому-то, кто запускает почтовый сервер postfix на OS X.