Настройка почтового сервера только для приема и обработки входящих сообщений и вложений

Я хотел бы создать следующий сценарий на моем сервере Ubuntu 14.04:

  • настроить почтовый сервер (или он называется «Агент передачи почты»?), который должен заботиться только о получении писем. Нет необходимости настраивать отправку писем с этого сервера.
  • выполнить базовую фильтрацию входящих писем (проверьте, имеет ли почта соответствующее вложение – именно файл с определенным расширением)
  • сохранять вложения только в определенной папке
  • удалить обработанные сообщения (ы)

Я почти ничего не знаю о почтовых серверах, и я попытался немного поиграть с Postfix но если я правильно понял, есть несколько лучших решений для фильтрации и обработки почты? Я знаю Python и PHP поэтому я могу обрабатывать фильтрацию / обработку на одном из этих языков, но до сих пор не знаю, с чего именно начать.
Я бы предпочел обрабатывать входящую почту сразу после получения, если это возможно, вместо выполнения задания cron на каком-то скрипте Python и удалить обработанное сообщение сразу после сохранения вложения.
В этот конкретный момент мне не нужно настраивать защиту или защиту от нежелательной почты / вируса.

Поскольку я немного запутался в том, как настроить этот рабочий процесс, я хотел бы попросить хотя бы отправную точку для каждого шага, а также ссылки для дальнейшего чтения – это больше, чем приветствуется! Я не требую полного решения, но некоторые советы о пакетах, которые могут быть полезны в этом сценарии, действительно оценены.

One Solution collect form web for “Настройка почтового сервера только для приема и обработки входящих сообщений и вложений”

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

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

Затем вы можете забрать почту, используя fetchmail или аналогичную программу, которая говорит о вашем локальном postfix только слушая локальные подключения. (если ваш сервер имеет фиксированный IP-адрес и может обрабатывать внешние соединения stmp, вы можете пропустить этот шаг и выполнять только остальные).

postfix должен быть настроен на использование procmail качестве вашей команды почтового ящика (в main.cf :

 mailbox_command = procmail -a "$EXTENSION" 

fetchmail должен запускаться как обычный (я проверяю каждую минуту с моим поставщиком) работу cron для некоторого пользователя, который выполняет обработку. Этот пользователь должен иметь файл ~/.procmailrc который может выполнять некоторую фильтрацию и передавать электронную почту скрипту, используя запись типа:

 :0 $ ^Subject:.*some_text_that_has_to_be_in_the_subject_to_be_valid_for_processing | /usr/local/bin/your_program 

Теперь your_program должна иметь возможность обрабатывать формат файла (заголовок, за которым следует тело). Я использую python и его стандартный модуль email для обработки сложностей вложений MIME.

Подсказка: your_program сохраните входящие данные (на sys.stdin ) sys.stdin в каком-либо файле xyz во время разработки, так что вы можете посмотреть на это и развить это без изменений (просто запустив your_command < xyz ), чтобы вам не пришлось проходить через хлопот отправки электронных писем с вложениями для проверки этого этапа процесса.

  • Создание правила UFW, позволяющего приложению использовать динамические порты
  • Создание образа Debian с панели запуска Ubuntu
  • Как указать путь python для pip?
  • Как переключиться с CLI на GUI Ubuntu
  • Как я могу убить процесс, выполняющийся на определенном IP-адресе и порту?
  • Windows 10 отсутствует из grub после обновления Ubuntu
  • настроить пользователя и его корневой каталог в vsftpd, в Ubuntu
  • Могу ли я установить из источника, когда у вас уже есть пакет репо?
  • Установка загрузчика ядра EFI в ядре 3.2?
  • Монитор, показывающий тот же рабочий стол дважды
  • USB-модем не работает после установки какого-либо пакета
  • Interesting Posts

    Одновременное копирование CD с несколькими битрейтами mp3 с использованием abcde

    "Echo 3> / proc / sys / vm / drop_caches" – разрешение отклонено как root

    xdg-open установлен еще и не установлен

    процесс pkill, содержащий специальные символы

    Как обнаружить «движение» петли 2-в-1 в ноутбуке

    Как можно разделить текстовый файл на основе содержимого на несколько текстовых файлов?

    Время автономной работы для нескольких виртуальных машин

    Как ограничить / контролировать blkio процесса cgroup, когда процесс имеет перенаправление вывода

    Можно ли заменить </ sys: String> командой sed?

    Как интерпретировать строку в sudoers

    grep, похоже, игнорирует – include

    Использование файлов, имеющих пробелы в их имени в трубах

    Меньшая ресурсная голодная альтернатива для трубопровода `cat` в gzip для огромных файлов

    удалить путь "/" из имени файла

    ps: Как получить процессы без потребления памяти?

    Linux и Unix - лучшая ОС в мире.