Сценарий Exim для вывода отправителя и получателя

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

-> если отправитель находится на нашем сервере -> захватите отправителя и получателя -> введите команда 'spfbl superwhite add "recipient@domain.tld > sender@domain.tld".

Очень важно, чтобы система фильтровала только отправителей, размещенных на наших серверах cPanel (поэтому мы можем использовать файл / etc / localdomains) .. но я понятия не имею, как это начать.

У кого-то есть есть идеи?

Очень признателен.

ОБНОВЛЕНИЕ

Мне удалось это сделать с помощью сценария, предоставленного kondybas, с некоторыми изменениями:

Section: PREROUTERS
whitelister:
  driver    = accept
  domains    = !+local_domains
  condition = ${if match_domain{$sender_address_domain}{+local_domains}}
  transport = whlist
no_more

-

Section: TRANSPORTSTART
whlist:
  driver  = pipe
  command = /var/spool/exim/autoWH $local_part@$domain 

И / var / spool / exim / autoWH файл:

#!/bin/sh

# Debug:
echo "Args recebidos: \$1 = $1" >> /var/spool/exim/log-transport.log

# Magica:
/var/spool/exim/spfbl.sh white sender $1
####

Все в папке, принадлежащей exim, поэтому у меня нет проблем с правами доступа.

Ой .. проблема: используя эти параметры, exim не доставляет почту, поскольку пытается сделать локальную доставку: локальная доставка не удалась

0
задан 1 August 2016 в 03:06
1 ответ

Просто добавьте маршрутизатор и транспорт следующим образом:

begin routers
whitelister:
  driver    = accept
  domain    = !+local_domains
  condition = ${if inlist{$sender_address_domain}{+local_domains}}
  transport = whlist
  unseen

и транспорт:

begin transports
whlist:
  driver  = pipe
  command = spfbl superwhite add "$address_data > $sender_address_data"

UPDATE

Лучшим подходом является вызов некоторого сценария оболочки вместо прямого вызова служебной программы. По крайней мере, вы не перезапускали exim каждый раз при изменении скрипта:

begin transports
whlist:
  driver  = pipe
  command = /path/to/script $address_data $sender_address_data

Тогда скрипт должен быть таким:

#!/bin/sh

# Debugging info:
echo "Received args are: \$1 = $1 and \$2 = $2" >> /path/to/transport.log

# The magic:
/path/to/spfbl superwhite add "$1 > $2"
####
0
ответ дан 5 December 2019 в 09:44

Теги

Похожие вопросы