postfix - як перенаправляти всі електронні листи до одного користувача, наприклад *@example.com → user@example.com


27

Я використовую постфікс для свого електронного листа. Я знаю, що я можу використовувати / etc / псевдоніми та newaliases команди для переадресації певної електронної пошти, наприклад, я можу перенаправити root@example.com на user@example.com, ввівши root: userсвій / etc / псевдоніми та потім запустивши newaliases. Однак я хотів би зробити еквівалент *: user, так що вся електронна пошта на сторінку example.com буде надіслана на адресу user@example.com.

Як це зробити?

Відповіді:


19

luser_relay = user@example.comу вашому main.cfє те, чого ви хочете.

Щоб відключити перевірку користувача та прийняти всі повідомлення, вам потрібно додати цю local_recipient_maps =опцію. Документація


1
Я додав це до main.cf та перезапустив постфікс. У /var/log/main.info я отримав таку помилку: <pre> 550 5.1.1 <myrandom@example.org>: адреса отримувача відхилена: користувач невідомий у місцевій таблиці одержувачів; from = <me@gmail.com> to = <myrandom@example.org> </pre>
Rory,

Тож example.org не знаходиться у вашому списку місцевих доменів одержувачів, або щось інше неправильно налаштовано.
живіт

7
У мене це працює. Як і згаданий вами варіант luser_relay, вам також потрібно додати параметр "local_recipient_maps =". На цій сторінці документації про постфікси пояснюється, що: postfix.org/postconf.5.html#luser_relay
Rory,

Чи зберігає цей метод адресу електронної пошти? (віртуальні карти переписують його, а оригінал To: адреса втрачена.)
user14645

1
@Sverre питання - це питання, а не коментарі до семирічних відповідей на дотичні питання.
жіночий

17

Що ви шукаєте, це віртуальна таблиця псевдонімів, і це можна зробити за допомогою наступного ...

Спочатку потрібно відредагувати або створити, якщо він ще не існує, / etc / postfix / віртуальний файл.

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параметра, як згадували інші, полягає в тому, що місцевим агентом доставки це трактується як користувач останніх курортів за невідомими адресами. Якщо постфікс обробляє пошту лише для одного домену, це можна використовувати для цього, але це може замаскувати інші помилки конфігурації і, ймовірно, спричинить несподівані результати, якщо обробляється більше одного домену.

Єдине застереження, яке я відчуваю зобов’язаним зазначити, - створивши псевдонім такого типу, ви відкриваєте свою поштову систему для прийому повідомлень за адресами, які не існуватимуть, і ризикуєте швидко набити поштову скриньку спамом для неіснуючих. поштові скриньки.


8

Насправді це досить просто. Все, що вам потрібно зробити, - це помістити щось подібне у свій main.cfфайл:

virtual_alias_maps = regexp:/etc/postfix/virtual_alias

regexpЧастина робить трюк. Крім того, /etc/postfix/virtual_aliasви поміщаєте щось подібне:

/^test/ you@yourdomain.com

У цьому прикладі ви повинні отримувати всю пошту з пунктом призначення, починаючи з "тесту". Не забудьте розмістити postmap / etc / postfix / virtual_alias та перезавантажити постфікс.


6

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

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

( local_recipient_maps =не має значення)

Я використовую локальний обліковий запис Linux Linux, а також додаю того самого користувача до / etc / aliases, щоб користувач отримував всю пошту до root, postmaster тощо.

Ви також можете поєднати цю саму адресу у вашому virtual_alias_mapsта вказувати будь-які віртуальні домени на цей самий основний обліковий запис.

Будь ласка, зверніться до luser_relay для отримання додаткової інформації.


3

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

На /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 зовсім не ускладнює. Віртуальні псевдоніми - це стандартний спосіб робити catchalls в Postfix, і вони дуже прості. Це означає, що на будь-якому, крім іграшкового поштового сервера для вашого особистого домену, catchalls - дуже погана ідея.
Роб Чентер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.