после того, как я не смог заставить свой сервер Postfix выполнить правильную перезапись, я попытался использовать вместо этого сервер Exim, но у меня снова не получается простая перезапись.
Я использовал конфигурацию по умолчанию, добавил в нее свои переменные и создал новый маршрутизатор для доставки на оба локальных почтовых сервера в моей частной сети. Этот маршрутизатор является первым в технологической линии и настроен следующим образом:
manualroute_domains:
driver = manualroute
domains = lsearch;/etc/exim/relay_hosts
route_data = ${lookup{$domain}lsearch{/etc/exim/relay_hosts}}
transport = remote_smtp
verify_recipient = false
verify_sender = false
Тестовое письмо с домена 1 на домен 2 было успешно доставлено.
Теперь я начал создавать свое первое правило перезаписи в блоке "начать перезапись":
user1@domain1.com user1@newcorp.com SFfrs
Тест с exim -brw user1@domain1.com
приводит к тому, что я хочу, чтобы мой домен был переписан, но когда я пытаюсь отправить письмо с домена 1, со шлюзом в качестве моего смарт-хоста, оно всегда получается с окончанием domain1.com, а новый адрес нигде не встречается в заголовке почты.
Возможно ли, что мне нужно где-то заявить об использовании перезаписи в моем роутере? Я хочу добавить условия для моей перезаписи, поэтому использование header_rewrite
на роутере для меня не вариант.
Заранее благодарим вас за любую идею или мысль относительно моей конфигурации!
С уважением, TooCloudy
Вы переписываете не в то время. В S
Параметр rewrite определяет перезапись входящих адресов по мере их получения. Шаблон должен соответствовать всему адресу, полученному в MAIL FROM
команда. Вероятно, вы захотите переписать, когда заголовки читаются во время обработки данных.
Имейте в виду, что изменение адресов может вызвать меры по предотвращению спама. В частности, записи SPF для домена, скорее всего, не будут включать ваш хост в качестве разрешенного отправителя.
Попробуйте использовать такое правило перезаписи:
*@example.com $1@example.net Ffrs
Если вы хотите переписать отдельные адреса, используйте /etc/email-aliases
который будет использовать одно из этих правил перезаписи.
*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs
*@ETC_MAILNAME "${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs
Возможно, вам потребуется создать /etc/email-addresses
. Хотя он обычно поддерживается, он используется редко. Вышеупомянутые правила будут работать, если все ваши отправители находятся в локальном (ых) домене (ах), и их следует переписать для всех локальных доменов.
Если вам нужно переписать в зависимости от домена, а также от local_part, вам необходимо настроить виртуальные домены. Если у вас есть определенный список доменов virtual_domains
следующее правило перезаписи должно быть перезаписано на основе файлов формата псевдонима электронной почты в /etc/exim4/virtual
с такими именами, как email-example.com
.
*@+virtual_domains "${lookup{${local_part}}lsearch{/etc/exim4/virtual/email-${domain}}\
{$value}fail}" Ffrs
В качестве альтернативы вы можете сопоставить адреса с указанием домена, например user@example.com
в /etc/aliases
файл, используя правило вроде:
*@+local_domains "${lookup{${local_part}@${domain}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs
Вы можете протестировать свои правила перезаписи, как описано в Exim4 Спецификация перезаписать главу командой вроде:
exim -brw ph10@exim.workshop.example
Оба псевдонима и etc-aliases должны содержать такие строки, как:
local_user: new_user@example.net