Я бы хотел создать адрес, например something@myhost.com, который будет принимать все полученные сообщения электронной почты и запускать полное сообщение как STDIN в сценарии оболочки. Хотя я не могу заставить это работать. Пробовал пару решений, в том числе это:
Как я могу перенаправить некоторые электронные письма на скрипт в Postfix?
Но моя установка немного другая. У меня есть установка Postfix / Dovecot / MySQL, поэтому вся электронная почта обрабатывается Dovecot, а Postfix читает свои карты из MySQL. Все, что я добавляю в master.cf, похоже, не работает. У SpamAssassin есть строка, и она работает нормально. Я застрял!
РЕДАКТИРОВАТЬ: Я действительно хочу, чтобы люди внимательно прочитали, прежде чем голосовать против моего вопроса. Я использую MySQL для своих карт псевдонимов, поэтому / etc / aliases не работает, я, конечно, уже пробовал это.
Очевидно, сработает ответ Дугласа Лэнда с небольшим дополнением.
Предположим, у вас есть только localhost.localdomain в $ mydestination в main.cf.
Затем добавьте виртуальный псевдоним:
something@myhost.com -> somelocaluser@localhost.localdomain
В main.cf вам понадобятся:
alias_maps=hash:/etc/aliases
Затем добавьте в / etc / aliases:
somelocaluser: "|/your/script/here"
newaliases + postfix reload, и все готово.
Я бы пошел с Procmail. Мы используем это, чтобы анализировать всевозможные письма, отправляемые рабочим скриптам и IRC-ботам для получения уведомлений.
Вот пример о том, как обращаться с электронной почтой. http://linuxgazette.net/issue14/procmail.html
Соответствующий короткий пример, сделанный здесь для простоты:
Создайте локального пользователя с именем handler
, например.
Перейти к handler
домашний каталог и создайте файл с именем .procmailrc
содержащий:
:0 | $HOME/bin/my.script
Это передаст скрипту всю входящую почту. $HOME/bin/my.script
через STDIN.
Также здесь мне помогли Procmail, когда я впервые пытался передать электронную почту скрипту: Как использовать procmail для передачи сообщения в переменную
Вы можете передать запись в скрипт через /etc/aliases
, RE:
foo: "|/your/script/here"
модифицировать /etc/aliases
затем беги newaliases
и перезагрузите постфиксный процесс.
Я бы проверил, поддерживает ли sieve конвейер для сценария. Dovecot поддерживает скрипты сита.
В качестве альтернативы вы можете использовать "procmail" в качестве MDA между postfix и dovecot. Procmail может подключаться к сценарию.
(при этом мне интересно, почему ответ Дугласа Лэнда не работает, mysql как бэкэнд не должен делать другого ?!) "
Что не было упомянуто, так это то, что вы можете использовать более одной таблицы поиска (через запятую или пробел):
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf
alias_maps = mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases
Первый (virtual_alias_maps) будет искать электронную почту и возвращать имя пользователя (например: info@example.com -> info1234).
Затем второй (alias_maps) будет искать имя пользователя в вашей базе данных, если он не найден, будет искать его в / etc / aliases. Таким образом, вы по-прежнему можете управлять своими псевдонимами в MySQL и устанавливать свои сценарии в / etc / aliases, и вам не нужно добавлять «@ localhost.localdomain» к локальным пользователям.
Чтобы проверить правильность вашей настройки, используйте:
postmap -q info@example.com mysql:/etc/postfix/mysql-virtual.cf
postmap -q info1234 mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases
Использование локальных учетных записей с псевдонимами в MySQL:
В одной из моих пользовательских настроек я использую локальные учетные записи для пользователей и MySQL только для псевдонимов. Вот как я это установил:
virtual_alias_maps = hash:/etc/postfix/vusers
smtpd_sender_login_maps = hash:/etc/postfix/vusers
virtual_alias_domains = /etc/postfix/vhosts
alias_maps = mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases
Как видите, не стесняйтесь смешивать их как хотите.