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

пересылать всю почту в указанном домене скрипту

Я запускаю одноразовую службу электронной почты, которая принимает всю входящую почту и перенаправляет ее в сценарий PHP, который хранит ее в базе данных для просмотра людьми. До сих пор я был на виртуальном хостинге с cPanel, который упрощает перенаправление электронной почты в сценарий. Однако теперь у меня есть собственный VPS, и на нем нет cPanel. Как направить электронные письма в сценарий? Кроме того, как направить электронные письма любой обращаться на неких указанных доменах к моему скрипту? Видите ли, помимо основного домена, есть несколько альтернативных доменов, которые люди могут использовать, если основной домен заблокирован, и я хочу, чтобы в каждом домене можно было использовать любой адрес (xyz @ domain1, abc @ domain2, somethingelse @ domain3).

На VPS установлена ​​Ubuntu 9.04, и я экспериментировал с Postfix, хотя могу переключиться на Exim или Sendmail, если это проще.

Наконец-то разобрался. В конце концов, я использовал Sendmail. Я включил функцию virtusertable в sendmail.mc (см. Информацию на Веб-сайт Sendmail), затем поместите в / etc / mail / virtusertable следующую строку:

@disposaldomain.net parser@localhost

Которая направляет всю почту в этот домен пользователю «синтаксический анализатор». Затем я вставляю в конец / etc / mail / aliases эту строку:

parser: "|/path/to/script/parser.php"

После этого мне пришлось запустить эти команды (из / etc / mail):

makemap hash virtusertable.db < virtusertable
newaliases
/etc/init.d/sendmail reload
/etc/init.d/sendmail restart

Вот и все!

В Exim'е это будет обрабатываться псевдонимом с подстановочными знаками и транспортом канала. Ищите аналог для Postfix. Псевдонимы могут быть настроены для указания команды для обработки сообщения.

Если у вас есть другие домены, которые вы хотите обрабатывать по-другому, настройте псевдонимы виртуального домена и поместите подстановочный знак в файл псевдонимов для домена.

Похоже, в Postfix есть демон конвейера для обработки доставки команде.

РЕДАКТИРОВАТЬ: решение Exim с использованием раздельной конфигурации. Это требует установки exim4-daemon-light пакет. Я бы посоветовал вам также установить exim4-doc-html пакет для предоставления документации по адресу http://localhost/doc/exim4-doc-html/html/spec_html/.

Добавить файл в /etc/exim4/conf.d/router названный 380_local-config_program_router. Проверьте параметры универсальных маршрутизаторов i (главы 15 и 16 в спецификации). При необходимости измените имя сценария и домен.

# This router runs /usr/bin/your-script for all users in your.domain.
program_router:
  driver = accept
  require_files = /usr/bin/your-script
  transport = program_transport
  domains = your.domain

Добавить файл в /etc/exim4/conf.d/transport названный 380_local-config_program_transport. Проверьте варианты транспортировки труб (главы 24 и 29 в спецификации). Вам нужно будет установить параметры, для которых не указано значение. Также установите правильную команду, которая при необходимости может иметь параметры.

program_transport:
  driver = pipe
  command = /usr/bin/your-script
  current_directory = 
  home_directory = 
  user = 
  group = 

Я изменил конфигурацию из эта почта.

Edit2: Похоже, вы тоже можете сделать это с Postfix. Решение, использующее групповой адрес для виртуальный домен и непрямая доставка типа maildrop должен это сделать.

Большинство MTA позволяют вам настроить, какой агент доставки использовать (MDA), и я настоятельно рекомендую procmail - он предоставляет огромный набор функций, например его довольно просто настроить для фильтрации входящей почты с помощью spamassassin, пересылки писем на ваш PHP-скрипт, отправки автоматического ответа, пересылки копии самому себе и записи копии в почтовый ящик.

Действительно, у procmail фактически есть свой собственный язык программирования - страницы руководства не отражают его должным образом. Есть некоторые книги доступны. Или попробуйте поискать статьи в Google.

Большинство дистрибутивов используют procmail в качестве MDA с некоторыми MTA (особенно sendmail). Я бы с осторожностью использовал Exim (см. Сообщения в другом месте). Часто, поскольку postfix предоставляет собственный MDA, procmail не настраивается, но его можно легко добавляется.

Обратите внимание, что MDA работает с сообщениями после того, как MTA решил, куда их доставить. Если вы хотите фильтровать сообщения перед доставкой (например, которые ретранслируются вашим MTA), вам, вероятно, следует обратить внимание на milter.