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

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

<p><code>luser\_relay = user@example.com</code> в вашей <code>main.cf</code> это то, что вы хотите.</p><p>чтобы отключить проверку пользователей и принимать все письма, необходимо добавить <code>local\_recipient\_maps =</code> вариант. <a href="http://www.postfix.org/postconf.5.html#luser\_relay">документация</a> </p>

<p>то, что вы ищете, является виртуальной таблицей псевдонимов и может быть сделано с помощью следующего ...</p><p>сначала вам нужно отредактировать или создать, если он еще не существует, файл <em>/ etc/postfix/virtual</em>.</p><pre><code>example.com whatever @example.com user@example.com </code></pre><p>после того, как это будет сохранено, вам нужно будет запустить <code>postmap /etc/postfix/virtual</code> для того, чтобы сгенерировать индексированный <em>/ etc/postfix/virtual.db</em> postfix будет читать.</p><p>затем вам нужно будет отредактировать <em>/ etc/postfix/main.cf</em> и убедиться, что у вас есть следующая строка без комментариев:</p><pre><code>virtual\_alias\_maps = hash:/etc/postfix/virtual </code></pre><p>это фактически позволит postfix узнать о виртуальной таблице псевдонимов и использовать ее.</p><p>проблема с использованием <code>luser\_relay</code>, как уже упоминали другие, заключается в том, что локальный агент доставки обрабатывает его как пользователя последних курортов для неизвестных адресов. если postfix обрабатывает почту только для одного домена, это можно использовать для этого, но он может маскировать другие ошибки конфигурации и, вероятно, приведет к неожиданным результатам, если обрабатывается более одного домена.</p><p>единственное предостережение, которое я должен упомянуть, заключается в том, что, создавая подстановочный псевдоним такого типа, вы открываете свою почтовую систему для приема сообщений на несуществующие адреса и рискуете быстро заполнить почтовый ящик спамом для несуществующего почтовые ящики.</p>

<p>это на самом деле довольно просто. все, что вам нужно сделать, это поместить что-то подобное в ваш <code>main.cf</code> файл:</p><pre><code>virtual\_alias\_maps = regexp:/etc/postfix/virtual\_alias </code></pre><p>часть <code>regexp</code> делает свое дело. также в <code>/etc/postfix/virtual\_alias</code> вы положили что-то вроде этого:</p><pre><code>/^test/ you@yourdomain.com </code></pre><p>в этом примере вы должны получить всю почту с адресатом, начинающимся с 'test'. не забудьте опубликовать/etc/postfix/virtual\_alias и перезагрузить postfix.</p>

<p>чтобы объединить ответ/комментарий выше, который работал для меня проще всего (у меня есть один основной домен):<br> добавьте следующее к <code>/etc/postfix/main.cf</code>:</p><pre><code>luser\_relay = user@domain.com (or local system user) local\_recipient\_maps = </code></pre><p>(<code>local\_recipient\_maps =</code> не имеет значения)</p><p>я использую локальную учетную запись linux, а также добавляю того же пользователя в/etc/aliases, чтобы пользователь получал всю почту для root, postmaster и т.д.</p><p>вы также можете объединить этот же адрес в вашем <code>virtual\_alias\_maps</code> и укажите любые виртуальные доменные имена на эту же основную учетную запись.</p><p>пожалуйста, обратитесь к <a href="http://www.postfix.org/postconf.5.html#luser\_relay">luser\_relay</a> для получения дополнительной информации.</p>

<p>если вы хотите использовать универсальный адрес для моего домена, вы можете использовать <code>/etc/aliases</code> в сочетании с регулярным выражением следующим образом:</p><p>в <code>/etc/postfix/main.cf</code> добавить<br> <code>alias\_maps = hash:/etc/aliases, regexp:/etc/postfix/catch-all-local.regexp</code></p><p>в <code>/etc/postfix/catch-all-local.regexp</code> добавить<br> <code>!/^owner-/ your-catch-all-user</code></p><p>это должно сделать свое дело. это работает для меня, и работает с virtual\_alias\_maps, установленным параллельно.</p>

<p>в postfix есть менее известный <a href="http://www.postfix.org/database\_readme.html#types">статический</a> тип таблицы поиска, который может использоваться именно для этой цели:</p><pre><code>alias\_database = static:user@example.com alias\_maps = static:user@example.com </code></pre><p>если user@example.com не является локальным для этой системы, вы также, вероятно, захотите отбросить все сообщения о сбое, заменив строки, заканчивающиеся на <code>bounce</code>, на <code>discard</code> в <code>master.cf</code> чтобы избежать почтовых петель.</p>