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

Postfix или exim: автоматическая / программная и перенаправленная настройка электронной почты

Я хочу заменить наше текущее использование внешнего поставщика smtp на внутреннюю установку. Он должен обрабатывать следующие ситуации:

Я использовал sendmail в далеком прошлом. Кажется, что в наши дни рекомендуется использовать postfix и exim. Мой главный вопрос: какой лучший выбор и настройка для пересылки адресов в Gmail и для программного доступа? Procmail все еще актуален или есть лучшие варианты в наши дни?

Мы используем серверы linux / ubuntu.

Postfix надежен, хорошо поддерживается и прост в настройке. Все, что вы описываете, довольно рутинно.

  • Пересылка: используйте карты virtual_alias
  • Почтовые ящики POP / IMAP: локальная доставка, используйте что-то вроде Dovecot для вашего POP / IMAP-сервера
  • Программные вещи: если вы имеете в виду, что отправляете почту скрипту, это делается из / etc / aliases. Для «легко обрабатываемого» у вас есть формат mbox и Maildir, это все стандартные вещи.
  • Доменные ключи / SPF: SPF выполняется в DNS. Доменные ключи достаточно легко настроить как milter или SMTP прокси.

для программного обеспечения вы должны знать, под каким UID будут запускаться программы / скрипты.

Например, для постфикса скрипты, запускаемые из / etc / aliases (или любого другого файла псевдонимов, принадлежащего root), будут запускаться от имени пользователя «nobody».

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

если вам когда-нибудь понадобится запустить скрипт из почты как root, то самый простой способ (если у вас установлено sudo) - настроить sudo, чтобы разрешить никому запускать его как root без пароля и запускать его из скрипта-оболочки, который запускается это с помощью sudo.

ПРИМЕЧАНИЕ: всякий раз, когда запускаются скрипты из почты, вы должны помнить, что данные (т.е. почта) поступают из ненадежного источника (Интернет) .... поэтому крайне небезопасно использовать данные из тела или заголовка в качестве аргументы команд, выполняемых скриптом. По сути, это та же проблема, что и доверие к данным, предоставленным пользователем в сценарии CGI - просто не делайте этого. например подумайте, что мог бы сделать плохо написанный сценарий, если бы предоставленные пользователем данные были чем-то вроде "... innocuousdatahere ...; rm -rf /". вы можете подумать, что было бы легко проверить очевидные вещи, такие как точки с запятой, и удалить их, но есть много неочевидных вещей, которые вам также нужно проверить, и вы просто настраиваете себя на провал, потому что вы вряд ли их всех подумаете или поймаете. Намного безопаснее полностью устранить угрозу безопасности, просто никогда не доверяя данным, предоставленным пользователем.

это важно независимо от того, под каким UID будет запускаться скрипт, но особенно важно, когда / если он запускается от имени пользователя root.

Наконец, отвечу на один из ваших прямых вопросов: procmail по-прежнему является полезным инструментом для того, что вы хотите делать. как и maildrop и другие подобные программы. думайте о procmail и т. д. как о специализированных инструментах для синтаксического анализа тела и заголовков, чтобы принимать решения о том, что делать, поэтому вам не нужно иметь весь этот синтаксический код в ваших сценариях. напишите свой сценарий, чтобы он просто выполнял свою работу, и используйте procmail, чтобы решить, когда сценарий следует запускать. например, вы можете создать нового пользователя с именем, скажем, «mailjobs», у которого есть собственный домашний каталог и файл .procmailrc. затем создайте псевдонимы, которые пересылают почту этому пользователю. После этого .procmailrc mailjobs проверит заголовок X-Original-To, чтобы решить, какие скрипты запускать.

И exim, и postfix более чем способны делать то, что вам нужно, лучший совет - выбрать тот, который вам проще всего использовать и / или с которым вы лучше всего знакомы.

Что касается работы с пересылкой в ​​Gmail и в скрипты, лучший способ сделать это - использовать файл глобальных псевдонимов (обычно хранятся в / etc / aliases или / etc / mail / aliases).