Запутался в alias_maps и virtual_alias_maps

22

Я уже перечитал документы по этому, а также другим постам здесь, и это все еще очень неясно для меня. Я тестировал разные вещи, чтобы понять разницу между alias_mapsи virtual_alias_mapsя не вижу использования этих двух отдельных настроек в postfix. Это то, что я нашел до сих пор (Примечание: я использую postfix на том же сервере, что и мой веб-сервер, в качестве нулевого клиента только для отправки электронных писем) :

1) Файл / etc / aliases:

root: me@somedomain.com

Когда я добавил вышеупомянутое в alias_maps, я заметил, что некоторые сервисы, такие как fail2ban, могут выбрать это, и он отправляет электронные письма root на указанные адреса электронной почты псевдонимов. Однако я также заметил, что некоторые другие службы (например, mailкоманда) не соблюдают это и пытаются отправить электронное письмо напрямую на root@mydomain.com, который не существует (я думаю, что это myoriginпараметр postfix, который добавляет @ mydomain.com) , Чтобы это исправить, я добавилvirtual_alias_maps

2) / etc / postfix / virtual

root     me@someotherdomain.com

Когда вышеупомянутое добавлено, все сервисы используют этот виртуальный псевдоним электронной почты. Я также заметил, что как только я добавлю вышеизложенное, даже fail2ban начинает игнорировать мои начальные настройки в /etc/aliases/файле и начинает следовать адресу электронной почты, указанному в виртуальном файле.

Теперь это смутило меня еще больше -

  1. Зачем нам это нужно, /etc/aliases/когда электронная почта внутри карты виртуальных псевдонимов перезаписывает ее?

  2. Какова цель отображения этих двух отдельных псевдонимов и когда мы решаем, когда и что использовать?

  3. Почему fail2ban (который настроен для отправки по электронной почте root@localhost) сначала следовал по адресу электронной почты, указанному в alias_maps(/ etc / aliases /), а затем решает игнорировать тот, который virtual_alias_mapsбыл добавлен?

  4. Почему не все службы читают псевдонимы электронной почты, упомянутые в / etc / aliases, и работают только тогда, когда псевдонимы электронной почты добавляются в виртуальную карту псевдонимов?

Со вчерашнего дня я провел несколько часов и до сих пор не уверен. Может ли кто-нибудь помочь мне устранить мою путаницу?

РЕДАКТИРОВАТЬ: Это почтовый журнал, когда электронная почта отправляется в корень с помощью mail rootкоманды. Адрес электронной почты для псевдонимов упоминается в / etc / aliases /. Но почта не работает, пока я не перенесу этот псевдоним root aliases_mapsвvirtual_aliases_maps

Журнал, когда псевдоним корневой электронной почты упоминается в /etc/aliases/:

Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root>

Nov 14 16:39:27 Debian postfix/cleanup[4495]: 0F12643432: message-id=<20141114110927.0F12643432@Debian.domainname.com>

Nov 14 16:39:27 Debian postfix/qmgr[4338]: 0F12643432: from=<root@domainname.com>, size=517, nrcpt=1 (queue active)

Nov 14 16:39:27 Debian postfix/error[4496]: 0F12643432: to=<root@domainname.com>, orig_to=<root>, relay=none, delay=0.04, delays=0.03/0/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to domainname.com[128.199.147.136]:25: Connection refused)

Это журнал после того, как псевдонимы адресов электронной почты для корня перемещаются из /etc/aliases/к /etc/postfix/virtualгде доставки электронной почты успешны после изменения:

Nov 14 16:44:58 Debian postfix/pickup[4545]: ADD9A43436: uid=0 from=<root>

Nov 14 16:44:58 Debian postfix/cleanup[4563]: ADD9A43436: message-id=<20141114111458.ADD9A43436@Debian.domainname.com>

Nov 14 16:44:58 Debian postfix/qmgr[4544]: ADD9A43436: from=<root@domainname.com>, size=453, nrcpt=1 (queue active)

Nov 14 16:45:00 Debian postfix/smtp[4551]: ADD9A43436: to=<admin@somesite.com>, orig_to=<root>, relay=somesite.com[108.160.157.120]:25, delay=1.9, delays=0.03/0/0.97/0.88, dsn=2.0.0, status=sent (250 OK id=1XpEqC-0002ry-9s)

Nov 14 16:45:00 Debian postfix/qmgr[4544]: ADD9A43436: removed
Ниль
источник
I also noticed that some other services (like mail command) does not respect this-> Пожалуйста, покажите запись в почтовом журнале, относящуюся к этому условию
masegaloeh
@masegaloeh Обновил мой пост с почтовым журналом
Neel

Ответы:

35

Некоторый фон

Postfix унаследовал некоторые функции от старого sendmail, такие как milter и псевдонимы. Файл /etc/aliasesявляется частью aliasesнаследования и реализуется alias_maps. С другой стороны, постфикс имеет virtual_maps/ virtual_alias_mapsдля обработки псевдонимов электронной почты. Так в чем же разница между ними?

параметр alias_maps

  • Используется только для локальной (8) доставки

  • В соответствии с классом адресов в postfix , электронная почта будет доставляться по локальной сети (8), если доменные имена получателей указаны вmydestination

  • Вход поиск был только локальные части от полной электронной почты (Адресная например MyUser от myuser@example.com). Отказаться от доменных частей получателя.

  • Результат поиска может содержать одно или несколько из следующих:

    • адрес электронной почты : письмо будет переслано на адрес электронной почты
    • / file / name : электронное письмо будет добавлено к / file / name
    • | команда : почта отправлена ​​в команду
    • : include: / file / name : включить псевдоним из / file / name

параметр virtual_alias_maps

  • Используется виртуальной (5) доставкой

  • Всегда вызывается в первый раз перед любыми другими адресными классами. Он не заботится ли домен получателя , перечисленных в mydestination, virtual_mailbox_domainsили в других местах. Он переопределит адрес / псевдоним, определенный в других местах.

  • Входной поиск имеют некоторый формат

    • user @ domain : будет соответствовать user @ domain буквально

    • user : будет соответствовать user @site, когда сайт равен $myorigin, когда сайт указан в $mydestinationили когда он указан в $inet_interfacesили $proxy_interfaces. Эта функциональность пересекается с функциональностью локальной базы данных aliases (5).

    • @domain : он будет совпадать с любым адресом электронной почты domainнезависимо от локальных частей

  • Результат поиска должен быть

    • Действующий электронный адрес
    • пользователь без домена. Postfix добавится, $myoriginесли append_at_myoriginустановлено да

Зачем нам нужен / etc / aliases, когда электронная почта внутри карты виртуальных псевдонимов, кажется, переопределяет ее?

Как вы можете видеть выше, alias_maps(/ etc / aliases) имеет некоторые дополнительные функции (помимо переадресации), такие как передача в команду. Это контрастирует с тем, virtual_alias_mapsчто просто переслать письмо.

Какова цель отображения этих двух отдельных псевдонимов и когда мы решаем, когда и что использовать?

Эти alias_mapsнедостатки можно дифференцировать , если первоначальный получатель имеет форму root@example.com или root@example.net . Оба будут сопоставлены с корневой записью в alias_maps. В других руках вы можете определить другой адрес для пересылки virtual_alias_maps.

Почему fail2ban (который настроен для отправки электронной почты root @ localhost) сначала следовал по адресу электронной почты, указанному в alias_maps (/ etc / aliases /), а позже решает игнорировать это после добавления virtual_alias_maps?

Перед добавлением virtual_alias_maps : root @ localhost был псевдонимом, alias_mapsпотому что localhost был указан в mydestination.

После того, как virtual_alias_maps определен : запись root(в virtual_alias_maps) не имеет доменных частей, а localhost указан в списке mydestination, поэтому он будет совпадать root me@example.com.

Почему не все службы читают псевдонимы электронной почты, упомянутые в / etc / aliases, и работают только тогда, когда псевдонимы электронной почты добавляются в виртуальную карту псевдонимов?

Команда mail rootотправит письмо на root. Из-за отсутствия доменных частей, postfix trivial-rewrite добавит myorigin к доменным частям. Итак, почта будет отправлена ​​пользователю root @ myorigin .

Перед добавлением virtual_alias_maps : К сожалению, myoriginнет в списке mydestination, поэтому он не будет псевдонимом alias_maps.

После добавления virtual_alias_maps : запись root(в virtual_alias_maps) не имеет частей домена и myorigin (очевидно) так же, как myorigin, поэтому она будет соответствовать root me@example.com.

masegaloeh
источник
1
В предложении В alias_mapsнедостатки можно дифференцировать ... слово может , вероятно , имел в виду , чтобы быть не может . В противном случае я не могу понять это.
Даниэль Бёмер
2
  1. /etc/aliasesОн предназначен главным образом для локальной доставки, например, для отправки почты в корень из cron и т. д., хорошо хранить ваши локальные псевдонимы отдельно, virtual_alias_mapsтакже можно использовать с базами данных SQL и т. д.

  2. virtual_alias_maps для случаев, когда у вас есть виртуальные пользователи (и виртуальные домены), которые часто не сопоставляются с системными пользователями, но если у вас нет виртуальных доменов и очень мало пользователей, такая функциональность может не потребоваться.

  3. fail2ban не волнует, он просто отправляет письмо в MTA.

  4. Вы должны быть более конкретными, какие услуги, как и где они отправляют почту?

NickW
источник
Спасибо @NickW пару вещей: (1) Для No: 4, команда mail является одной из служб, которая делает это. Я имею в виду, если / etc / aliases предназначен в первую очередь для локальной доставки локальным пользователям, разве mail rootкоманда не должна на самом деле попадать в эту категорию? Почему этот сервис рассматривает информацию из / etc / aliases при локальной доставке? (2) Учитывая это для моего сценария, является ли хорошей практикой использование псевдонимов адресов электронной почты пользователей, упомянутых в обоих документах, /etc/aliasesа также virtual_alias_mapsчтобы они работали для всего?
Neel
1
1. Хорошо, команда mail должна использовать /etc/aliasesпо умолчанию, очень глупый вопрос, вы запускали newaliasesпосле обновления файла, верно? 2. Я бы сказал, что это излишне, если люди будут получать почту с локального компьютера, стоило бы настроить скрипты так, чтобы они использовали свой правильный адрес электронной почты, чтобы он направлялся через postfix и доставлялся в правильный пункт назначения.
NickW
Привет @NickW да я перестроил псевдонимы, используя newaliasesпосле изменения. Единственное, что я могу подумать, почему он не использует псевдонимы, возможно, из-за настройки постфикса, которая добавляется @$domain_nameпосле пользователя и, следовательно virtual_alias_maps, необходима для перенаправления этих писем. Я читал это в постфиксных документах, и, возможно, именно поэтому mailкоманда root не работает с aliases: postfix.org/STANDARD_CONFIGURATION_README.html#some_local В любом случае, большое спасибо за помощь в понимании этого Ника. Я действительно ценю это .. :)
Neel
Рад, что помог :)
NickW