postfix - как перенаправить все электронные письма одному пользователю, например, *@example.com → user@example.com


27

Я использую постфикс для моей электронной почты. Я знаю, что могу использовать команду / etc / aliases and newaliases для перенаправления определенной электронной почты, например, я могу перенаправить root@example.com на user@example.com, введя root: userмой / etc / aliases и запустив его newaliases. Однако я хотел бы сделать эквивалент *: user, так что все письма на example.com будут отправлены на user@example.com.

Как мне это сделать?

Ответы:


19

luser_relay = user@example.comв твоем main.cfэто то что ты хочешь.

Чтобы отключить проверку пользователей и принять все письма, вам нужно добавить эту local_recipient_maps =опцию. Документация


1
Я добавил это в main.cf и перезапустил postfix. Я получил следующую ошибку в /var/log/main.info: <pre> 550 5.1.1 <myrandom@example.org>: адрес получателя отклонен: пользователь неизвестен в локальной таблице получателей; с = <me@gmail.com> на = <myrandom@example.org> </ pre>
Рори

Поэтому example.org отсутствует в списке ваших локальных доменов получателей, или что-то еще неправильно настроено.
womble

7
Я получил это работает. Помимо упомянутой вами опции luser_relay, вам также необходимо добавить опцию «local_recipient_maps =». Эта страница документации postfix объясняет, что: postfix.org/postconf.5.html#luser_relay
Рори,

Сохраняет ли этот метод адрес электронной почты To? (Виртуальные карты перезаписывают его, и оригинальный адрес To: теряется.)
user14645

1
@Sverre вопросы для вопросов, а не комментарии семилетних ответов на вопросы, связанные с тангенциальной.
womble

17

То, что вы ищете, является виртуальной таблицей псевдонимов и может быть сделано с помощью следующего ...

Сначала вам нужно отредактировать или создать, если он еще не существует, файл / etc / postfix / virtual .

example.com   whatever
@example.com  user@example.com

После того, как это будет сохранено, вам нужно будет запустить postmap /etc/postfix/virtual, чтобы сгенерировать индексированный /etc/postfix/virtual.db, который будет читать Postfix.

Затем вам нужно будет отредактировать /etc/postfix/main.cf и убедиться, что у вас есть следующая строка без комментариев:

virtual_alias_maps = hash:/etc/postfix/virtual

Это фактически позволит postfix узнать о виртуальной таблице псевдонимов и использовать ее.

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

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


8

Это на самом деле довольно просто. Все, что вам нужно сделать, это поместить что-то подобное в ваш main.cfфайл:

virtual_alias_maps = regexp:/etc/postfix/virtual_alias

regexpЧасть делает трюк. Кроме того, в /etc/postfix/virtual_aliasвас положить что-то вроде этого:

/^test/ you@yourdomain.com

В этом примере вы должны получить всю почту с адресатом, начинающимся с 'test'. Не забудьте опубликовать / etc / postfix / virtual_alias и перезагрузить postfix.


6

Чтобы объединить ответ / комментарий выше, который работал для меня проще всего (у меня есть один основной домен):
Добавьте следующее к /etc/postfix/main.cf:

luser_relay = user@domain.com (or local system user)
local_recipient_maps =

( local_recipient_maps =значение не установлено)

Я использую локальную учетную запись linux, а также добавляю того же пользователя в / etc / aliases, чтобы пользователь получал всю почту для root, postmaster и т. Д.

Вы также можете объединить этот же адрес в своем virtual_alias_mapsи указать любые виртуальные доменные перехватчики на той же основной учетной записи.

Пожалуйста, обратитесь к luser_relay за дополнительной информацией.


3

Если вы хотите использовать универсальный адрес для mydomain, вы можете использовать в /etc/aliasesсочетании с регулярным выражением следующее:

В /etc/postfix/main.cfдобавлении
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/catch-all-local.regexp

В /etc/postfix/catch-all-local.regexpдобавлении
!/^owner-/ your-catch-all-user

Это должно сделать свое дело. Это работает для меня, и работает с virtual_alias_maps, установленным параллельно.


0

В Postfix есть менее известный тип статической таблицы поиска, которую можно использовать именно для этой цели:

alias_database = static:user@example.com
alias_maps = static:user@example.com

Если user@example.com не является локальным для этой системы, вы также , вероятно , хотите , чтобы отменить все сообщения рикошета, заменив строки , оканчивающиеся bounceс discardв , master.cfчтобы избежать зацикливания почты.


-4

Я ненавижу быть убийцей, но ваша проблема в том, что вы используете Postfix. Postfix делает именно это упражнение очень сложным. Я знаю: я должен был сделать это несколько лет назад, и потребовались дни и дни, чтобы сделать это правильно. luserВариант является правильным, но есть и другие вещи , чтобы получить права, тоже. (И даже название опции показывает, что авторы Postfix действительно не хотели поддерживать это.)

Я рекомендую перейти на Курьер. Курьер поддерживает этот метод «всеохватывающего» гораздо более разумным способом из-за того, как он расширяет свою существующую систему псевдонимов.


1
Postfix совсем не усложняет. Виртуальные псевдонимы - это стандартный способ сделать вызовы в Postfix, и они очень просты. Тем не менее, на любом, кроме игрушечного почтового сервера для вашего личного домена, ловушки - очень плохая идея.
Роб Чантер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.