Переслать всю электронную почту для одного домена в одну учетную запись или файл, но правильно доставить другие домены

У меня есть сервер Linux, который использует Postfix для электронной почты. Он находится на динамическом ip, поэтому я использую параметр relayhost для отправки исходящей почты через туннель ssh на другой сервер на статическом ip, и оттуда он отправляется в реальный мир. Это работает нормально примерно с 1998 года или около того.

В настоящее время я разрабатываю какое-то программное обеспечение для клиента, и оно отправляет электронную почту различным людям в организации этого клиента на основе информации в базе данных. Для моего первоначального тестирования я создал поддельных людей, у которых были все адреса электронной почты, такие как ptomblin+client1@ enjmydomain отпуска.com, которые работали нормально и отправили мне все письма. Но сейчас я работаю с действующей базой данных, и все адреса электронной почты предназначены для реальных людей в организации клиента. Я не особо хочу отправлять электронное письмо тем людям, сообщая им, что запрашиваемый ими системный доступ предоставлен, поэтому я хотел бы перенаправить всю электронную почту в домен этого клиента либо на мой адрес электронной почты, либо в файл.

2 ответа

Решение

Если я правильно понимаю, вы хотите, чтобы вся почта, предназначенная для example.com, доставлялась на ваш почтовый адрес или в файл, а не пересылалась на сервер, указанный в relayhost:

Шаг 1: Добавьте example.com к mydestination в main.cf, чтобы почта, предназначенная для example.com, доставлялась локально.

Шаг 2: Установите перехват для example.com и отправьте всю электронную почту на ваш почтовый адрес или в файл. Например, вы можете использовать postfix pcre для достижения этой цели.

Расширенный шаг 2

Использование postfix pcre - это только один из способов добиться этого среди многих других. Согласно этому уроку от garisson:

  1. Создайте локального пользователя mylocaluser и его почтовый ящик или почтовый ящик
  2. Создайте файл с именем aliases-pcre с содержимым:

    /@example\\.com$/ mylocaluser
    

    добавьте следующие строки в main.cf (если main.cf находится в /etc/postfix):

    alias_database = hash:/etc/postfix/aliases
    alias_maps = hash:/etc/postfix/aliases, pcre:/etc/postfix/aliases-pcre
    
  3. Перезапустить постфикс

Теперь вся почта, предназначенная для *@example.com, должна отправляться в почтовый ящик mylocaluser / maildir.

Опять же, это всего лишь пример. Вы можете использовать любой другой метод, который наилучшим образом соответствует вашим потребностям. Я часто использую pcre, потому что он позволяет использовать регулярные выражения, которые немного сложнее.


Однако вышеперечисленное не будет работать, так как вам нужен виртуальный домен.

Вот минимальный пример конфигурации:

(main.cf)
alias_database = hash:/etc/aliases
local_recipient_maps = 
relayhost = myotherserver.example.com
virtual_alias_maps = pcre:/etc/postfix/aliases-pcre
virtual_alias_domains = example.com
mydestination = localhost

файл /etc/postfix/aliases-pcre

/@example\.com$/ somelocaluser

Хорошо, Эрик привел меня близко к правильному пути, но не совсем там. Вот что я сделал:

  1. В /etc/postfix/main.cf:

    virtual_alias_domains = example.com
    virtual_alias_maps = regexp:/etc/postfix/virtual_alias
    
  2. В /etc/postfix/virtual_alias

    /@example\.com/ ptomblin
    

Один postfix reload позже и я был вдали от гонок. (Кстати, вам не нужно делать postmap в файлах регулярных выражений только хэши)

Другие вопросы по тегам