Как перенаправить всю исходящую почту с постфикса на один адрес для тестирования

13

Я настраиваю тестовый сервер для веб-приложения, которое отправляет уведомления по электронной почте.

Иногда тестирование выполняется с использованием реальных данных о клиентах, и по этой причине я должен гарантировать, что сервер не сможет отправлять электронные письма нашим реальным клиентам, пока мы проводим тестирование.

Я хочу настроить postfix так, чтобы он принимал любую исходящую электронную почту и перенаправлял ее на один адрес электронной почты вместо доставки в реальный пункт назначения.

Я использую Ubuntu Server 9.10.

заранее спасибо

thatjuan
источник

Ответы:

19

Настройте локального пользователя для получения всей захваченной почты:

adduser mailtrap

Вам нужно добавить в main.cf:

transport_maps = hash:/etc/postfix/transport
luser_relay = mailtrap

Затем создайте / etc / postfix / transport с этим там:

localhost :
your.hostname.example.com:
* local:mailtrap

Сохраните и запустите: postmap /etc/postfix/transportнаконец перезапустите postfixinvoke-rc.d postfix restart

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

Эндрю Шульман
источник
Это именно то, что я искал ... спасибо!
июня
3
Работы для меня , но только после того как я добавил luser_relay = xxxxxв main.cf. Без этого письма будут подпрыгивать.
Алекс Р
1
При использовании Ubuntu вы также можете перезапустить Postfix с помощью sudo service postfix restart. Расположение файла main.cf упоминалось выше /etc/postfix/main.cf. При первой установке и настройке Postfix вы можете использовать Local onlyопцию установки.
mtnorthrop
на MAC вы должны бежать, postmap hash:/etc/postfix/transportи sudo postfix stop,sudo postfix start
Банг Дао
это круто. Кто-нибудь знает, как устранить дубликаты, когда сообщение имеет несколько получателей?
серый
10

Лучше создать виртуальный файл псевдонимов:

В /etc/postfix/main.cf:

virtual_alias_maps = pcre:/etc/postfix/virtual

В / etc / postfix / virtual:

/.*@.*/ root

Вы можете заменить rootлюбого пользователя, которому вы хотите получать всю исходящую электронную почту. Этот шаблон можно настроить, если вы хотите, чтобы локальная почта доставлялась нормально (без перенаправления):

/.*@(?!hostname\.localdomain$).*/ root

Оригинальная идея найдена здесь: Сервер разработки Postfix - перехватывать всю исходящую почту

Пол Гидеон Данн
источник
2
Обратите внимание, что вам может понадобиться sudo apt-get install postfix-pcreзаранее, чтобы избежать ... сюрпризов.
Мирабилось
у меня работает очень хорошо!
Майкл-маммут
ошибка «Пользователь неизвестен в виртуальной таблице псевдонимов»
Alex R
5

Postfix предоставляет нечто, называемое smtp-sink. По умолчанию он скрывает всю полученную электронную почту. Более поздние версии также могут быть настроены для захвата электронной почты в файлах.

Технически это не использует postfix (но утилиту, предоставляемую postfix). Он также технически не перенаправляет каждое письмо на один адрес электронной почты. Но он захватывает весь трафик через порт 25 и сбрасывает его в файл, который может быть проанализирован.

toppledwagon
источник
Как вызвать smtp-сток? Одна страница, которую я нашел в Интернете, выглядела так, как будто это обычная программа, но если она шла с постфиксом, она не установлена ​​в моей системе (OSX 10.6). Как мне запустить этот сервис?
Крис Блум
Есть man-страница для smtp-раковины. Но некоторые параметры также описаны здесь: blog.malowa.de/2011/04/postfix-as-spam-trap-server.html
mailq