Запустите скрипт по получении электронной почты

Правило, о котором Вы спросили, является наиболее часто используемым avahi демоном на Linux для прислушиваний к запросам mDNS.

Это правило iptables позволяет поступать udp пакеты на порте 5353, которые предназначены для группового адреса 224.0.0.251. IANA определяет использование группового адреса здесь, и mDNS RFC здесь.

iptables -L -n произведите показанный, не полное изображение, поскольку исходное соответствие в Вашей ВХОДНОЙ цепочке могло бы показать более подробное пакетное соответствие на основе источника, интерфейс (интерфейсы), на этих пакетах позволяют, и множество других атрибутов. Начальное соответствие во ВХОДНОЙ цепочке может также перейти к другим цепочкам прежде, чем поразить это более позднее правило в цепочке "IN_ZONE_work_allow". Для получения лучшего понимания всех пакетных атрибутов, которые должны присутствовать для этого правила, которое будет инициировано необходимо работать назад от этой цепочки до первого раза IN_ZONE_work_allow замечен в target столбец, затем продолжите тем способом, пока Вы не находите, что первые спрыгивают с ВХОДА (предполагающий, что это не на самом деле передача ruleset). В Вашем случае, скорее всего, эта цепочка переходится к непосредственно от ВХОДА, как свидетельствуется примечанием после цепочечного имени: "1 ссылка". Я нахожу, что это намного больше прямо только к смотрит на вывод iptables-save если такой доступно на поле.

8
09.01.2015, 23:19
4 ответа

Я вижу два очевидных решения.

Если вы используете procmail в качестве MDA на вашем сервере, или хотите преобразовать его в использование, то вы можете запустить любой произвольный скрипт на любом произвольном почтовом ящике с помощью действия рецепта procmail | (pipe). Надеюсь, он не будет запущен от имени root, но это должно быть легко сделать скрипт, который выполняет необходимую магию и который может быть вызван соответствующим пользователем без права passwordless от имени root. Вывод скрипта может быть даже передан обратно в ту же электронную почту и электронную почту позже доставлены, сделав рецепт действия фильтра.

Альтернативой (которая должна требовать меньшего практического обслуживания) является создание одного почтового ящика и настройка Postfix's $recipient_delimiter на то, что обычно не используется для этой цели; например, . или -. Обратите внимание, что параметр receive_delimeter является настройкой для всего сервера. Допустим, вы устанавливаете почтовый ящик dummy@example.com и устанавливаете $recipient_delimeter = . . Это позволит dummy.<все>@example.com, который будет доставлять на локальный почтовый ящик, соответствующий dummy@example.com. Чтобы отключить один из них, добавьте dummy.@example.com в соответствующую таблицу получателей с действием отклонения. Недостатком является то, что это будет ловушка для префикса, так что вы захотите сделать префикс трудно наткнуться случайно или атаки по словарю. Недостатком является то, что в обычном случае (отправитель уважает ваши пожелания и не перепродает ваш почтовый адрес) такой подход требует нулевой поддержки, и вы всегда можете изменить префикс позже и явно перечислить те комбинации, для которых вы хотите продолжать получать почту.

4
27.01.2020, 20:10

Я бы рекомендовал использовать 7z.

7Z - формат архивирования 7-Zip, обеспечивающий высокую степень сжатия с помощью мощных алгоритмов сжатия, которые могут использовать преимущества параллельные вычисления на современных многоядерных процессорах.

Для создания 7z архива необходим p7zip-полный пакет. Чтобы сделать архивный запуск 7z a < you_archive_name>.7z < имя _ файла >

-121--252359-

Использование sudo вместо su для предоставления привилегий позволяет иметь подробные записи журнала в безопасном журнале (/var/log/secure в rhel-подобных distros). Например, тип userabc 'sudo vi/etc/group', запись журнала:

Jan 15 13:41:12 vm02 sudo:   userabc : TTY=pts/1 ; PWD=/home/userabc ; USER=root ; COMMAND=/bin/vi /etc/group
-121--230089-

Правильная процедура выполнения сценария (я использую сценарий оболочки) при получении почтового сообщения: Он включает в себя изменение файла конфигурации postfix , master.cf (который в моем Debian расположен в /etc/postfix ) путем добавления следующей строки:

 my_shell_script unix - n n - - pipe flags=F user=MY_USERNAME argv=/path/to/my/shell/script ${sender} ${size} ${recipient}

, которая предписывает postfix запускать сценарий (нужно сделать его исполняемым), когда происходит какое-либо событие.

Чтобы указать время выполнения сценария, выполните следующие действия: предположим, что он должен быть выполнен при получении сообщения username@domain.com . Поместите следующую строку

 username@domain.com FILTER my_shell_script:dummy

в файл /etc/postfix/address.txt ; необходимо создать соответствующую базу данных для postfix , чтобы использовать этот файл, что выполняется с помощью

  postmap /etc/postfix/address.txt

, который создает в качестве выходного файла файл с именем /etc/postfix/address.db . Теперь вернитесь к файлу /etc/postfix/main.cf и добавьте следующую строку:

 smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/access, permit_mynetworks, reject_unauth_destination

Теперь перезапустите postfix ,

  postfix reload

, и вы должны быть готовы перейти.

8
27.01.2020, 20:10

В случае, если ссылается , вот резюме.

Во-первых, перейдите в Master.cf и зарегистрируйте свой скрипт «MyHook», добавив следующую строку:

MyHook Unix - NN - - Флаги трубы = f user = www-data argv = / Path / to / script.sh $ {sender} $ {size} $ {Recrement}

Кроме того, редактировать SMTP Line, чтобы сообщить PostFix для запуска фильтра для любой почты, прибывающей через доставку SMTP:

SMTP INET N - - - - SMTPD -O Content_Filter = MyHook: Dummy

Обратите внимание, что если вы отправляете почту, используя команду «SendMail», фильтр не будет запускать. В этом случае добавьте опцию после метода доставки «Пикап»:

Pickup FIFO N - - 60 1 Pickup -O Content_Filter = MyHook: Dummy

Перезапуск Postfix: Postfix Reload

Сделайте свой скрипт

Читаемое и исполняемое исполнение любым: Chmod + RX Script.SH

Обратите внимание, что скрипт всегда срабатывает для любой почты. Чтобы указать точный адрес, см. @Mariusmatutiae Ответ.

2
27.01.2020, 20:10

Я нашел настройку Dovecot более элегантным решением (по сравнению с настройкой Postfix ). Шаги следующие:

  1. создайте свой скрипт (т.е.mail_processor.py)в каталоге /usr/lib/dovecot/sieve-execute/:

    #!/usr/bin/python3
    from sys import stdin
    with open('/var/log/mail_processor.log', 'a') as logfile:
        for line in stdin:
            print(line.rstrip(), file=logfile)
    
    • убедитесь, что ваш сценарий и целевые файлы имеют правильные разрешения:

      $ chmod +rx /usr/lib/dovecot/sieve-execute/mail_processor.py
      $ chmod 0777 /var/log/mail_processor.log
      
  2. включить плагин sieve_extprograms:

    • изменить раздел плагина \etc\dovecot\conf.d\90-sieve.confследующим образом:

      sieve_extensions = +vnd.dovecot.execute
      sieve_plugins = sieve_extprograms
      sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
      
    • перезагрузить голубятню:

      $ service dovecot restart
      
  3. создать сетчатый фильтр (т.е. в Roundcube перейдите кsettings->filters->actions->edit filter set):

    require ["vnd.dovecot.execute"];
    # rule:[mail processing]
    if true
    {
        execute :pipe "mail_processor.py";
    }
    

Теперь вся почта, доставленная в этот почтовый ящик фильтром sieve, будет проходить через mail_processor.pyдля принятия мер.

Pigeonhole Sieve :Плагин Extprograms документация для справки

2
11.05.2021, 05:34

Теги

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