Я создаю систему уведомлений о недоставках, где получатели могут отвечать на сообщения на моем сайте.
Однако когда электронное письмо отправляется пользователю, содержащее предыдущее сообщение, Reply-To
поле содержит такой адрес notification-message-988742@mysite.com
(который содержит идентификатор в конце).
Если пользователь ответит, ответное сообщение будет отправлено обратно на notification-message-988742@mysite.com
который, конечно, не имеет собственного почтового ящика, кроме notification@mysite.com
.
Как перенаправить все входящие сообщения, исходящие от определенного подстановочного знака notification-message-*@mysite.com
к notification@mysite.com
? Я провел небольшое исследование, но ни одна прочная часть не работала, включая luser_relay = notification@mysite.com
и положив notification-message-*
в таблице постфиксных псевдонимов notification@
есть Maildir, поэтому почта будет входить в него.
Принципиальная схема:
Я использую Ubuntu 11.04.
Как уже сказал mschuett, вы можете использовать регулярное выражение
Сначала проверьте, поддерживает ли постфикс регулярное выражение:
root @ mail / # postconf-m | grep regexp
regexp
root @ mail / #
Создайте файл / etc / postfix / aliases-regexp и добавьте в него свое регулярное выражение
root @ mail / # cat /etc/postfix/aliases-regexp
/notification-message-[0-9]+@example\.net/ notification@example.net
root @ mail / #
Запустите postmap и проверьте, работает ли он:
root @ mail / # postmap /etc/postfix/aliases-regexp
root @ mail / # postmap -q notification-message-123123@example.net regexp:/etc/postfix/aliases-regexp
notification@example.net
root @ mail / #
Если все в порядке, добавьте этот файл в базу псевдонимов.
Пример:
root @ mail / # cat /etc/postfix/main.cf | grep ^alias_maps
alias_maps = hash:/etc/aliases regexp:/etc/postfix/aliases-regexp
root @ mail / #
Если вы используете виртуальные домены, добавьте этот файл в свой virtual_alias_maps
Пример:
root @ mail / # cat /etc/postfix/main.cf | grep ^virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql/alias.conf regexp:/etc/postfix/aliases-regexp
root @ mail / #
Не забудьте перезапустить postfix.
Удачи!
Карты псевдонимов (виртуальный, местный, ...) будет работать в сочетании с regexp_table формат. Но если вы скомпилировали в PCRE, вы также можете использовать формат pcre_table.
В противном случае вам следует искать "Postfix catch-all", что немного более жадно.
Я был бы склонен решить эту проблему, используя recipient_delimiter
.
Если вы не против использовать немного другой Reply-To
адреса, вы можете установить:
recipient_delimiter = +
в вашей конфигурации, а затем напишите, например, notification+message-988742@mysite.com
(Обратите внимание +
) будет доставлен в notification
пользователь (при условии, что нет более конкретных правил / пользователей, соответствующих notification+message-988742
).
Вы мог попробуйте установить recipient_delimiter = -
(чтобы вы могли использовать Reply-To
заголовки, как они есть в вопросе), но я не уверен, как это будет работать с несколькими экземплярами разделителя в левой части, и у меня нет Postfix для проверки.
Создайте правило, используя «определенные слова в адресе отправителя». Он будет принимать несколько слов как «или», но я не знаю, как это сделать с помощью «и». Возможно, это уведет вас достаточно далеко.