Моя задача - создать конфигурацию постфикса, которая принимает всю почту со всех доменов, получателей и т. Д. И пересылает их в общий почтовый ящик. Это может быть дополнительно отфильтровано в будущем, и действительно, конфигурация должна быть отложена в другой среде, чтобы почта проходила предполагаемому получателю.
Вот сокращенный main.cf:
....
myhostname = mailserver.fqdn
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination =
myorigin = localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.5.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = 192.168.5.43, 127.0.0.1
inet_protocols = all
virtual_alias_maps = pcre:/etc/postfix/virtual
virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 2222
virtual_transport = virtual
virtual_uid_maps = static:2222
virtual_gid_maps = static:2222
....
/ и т.д. / постфикс / виртуальный:
/.*/ catchall
/catchall\@localhost/ catchall
Другие машины настроены на использование этого почтового сервера в качестве узла ретрансляции, и когда почта попадает сюда, это отображается в журнале:
Nov 28 10:08:10 mailserver.fqdn postfix/error[23768]: 5EA9BBD9F5: to=<catchall@localhost>, orig_to=<root@mailsender.fqdn>, relay=none, delay=0, delays=0/0/0/0, dsn=5.1.1, status=bounced (User unknown in virtual alias table)
Я, наверное, упускаю что-то очевидное, это наличие alias_maps = hash:/etc/aliases
?
Кроме того, если все пойдет хорошо, могу ли я ожидать, что общий почтовый ящик будет создан автоматически, или нужен другой элемент конфигурации?
Вы можете проверить результат с помощью postmap -q "something@example.com" pcre:/etc/postfix/virtual
. Он должен вернуться catchall
. Здесь может произойти то, что /.*/ catchall
также включает catchall@localhost
, заставляя его возвращаться к самому себе и в конечном итоге не разрешаться ни одному реальному пользователю.
Если у вас есть только определенный домен и его поддомены, безопаснее будет использовать:
/@((\w[\w\-]*)\.)+example\.com/ catchall
Затем обработайте localhost с помощью $local_transport
транспорт для доставки почты с использованием
mydestination = localhost
Теперь твой catchall@localhost
может быть реальным локальным пользователем или псевдонимом, определенным в /etc/aliases
.
Просто редактируя /etc/postfix/virtual
файла недостаточно, чтобы изменения вступили в силу. Вы должны запустить postmap
приказ сделать postfix
прочтите файл, вот так:
/usr/sbin/postmap /etc/postfix/virtual
Это создает новый файл с именем /etc/postfix/virtual.db
и псевдонимы теперь загружены в postfix
.