Я бы хотел, чтобы мой постфиксный сервер действовал как ретранслятор / интеллектуальный хост для некоторых клиентов, но хотел бы доставлять всю почту в локальный (в стиле Maildir) почтовый ящик вместо отправки предполагаемому получателю. Я знаю, звучит немного странно, но он предназначен для тестирования в наших тестовых средах.
Для нашей живой среды я хотел бы нормально доставлять почту.
Мой нынешний main.cf
выглядит так:
myhostname = mymail.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = pcre:/etc/postfix/mydestinations
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 = hash:/etc/postfix/virtual
default_process_limit = 100
smtpd_client_connection_count_limit = 10
smtpd_client_connection_rate_limit = 30
queue_minfree = 20971520
header_size_limit = 51200
message_size_limit = 10485760
smtpd_recipient_limit = 100
smtpd_tls_cert_file=/etc/ssl/certs/mailcert.crt
smtpd_tls_key_file=/etc/ssl/private/mailcert.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3
/ etc / postfix / mydestinations:
/^mymail.mydomain.com$/ ACCEPT
/^localhost.localdomain$/ ACCEPT
/^localhost$/ ACCEPT
/^.*\.mydomain\.com$/ ACCEPT
/ и т.д. / постфикс / виртуальный:
@mydomain.com catchall
Мне сказали, что это возможно, но я не могу найти никакой конкретной информации о том, как этого добиться.
Я вижу две разные проблемы с вашей текущей конфигурацией:
Ваши домены находятся в mydestination
пока вы пытаетесь реализовать свой адрес для приема всей почты домена с помощью virtual_alias_maps
, что потребовало бы, чтобы домены находились в virtual_alias_domains
.
У тебя есть только @example.com
в твоем virtual_alias_maps
, а регулярное выражение ^.*\.example\.com$/
предполагает, что вам понадобится эта универсальная информация для каждого *.example.com
. Для этого вам нужно иметь возможность использовать регулярное выражение на вашем virtual
, слишком. Поскольку это невозможно с hash:
, вам нужно будет использовать pcre:
здесь тоже.
Вам необходимо изменить эти настройки в вашем main.cf
:
mydestination = localhost
virtual_alias_domain = pcre:/etc/postfix/mydestinations
virtual_alias_maps = pcre:/etc/postfix/virtual
И ваш /etc/postfix/virtual
будет это регулярное выражение:
/@((\w[\w\-]*)\.)+example\.com/ catchall
Если вы используете pcre:
убедитесь, что ваш Postfix построен с Поддержка PCRE. У вас также есть возможность использовать regexp:
, но вы не сможете использовать регулярные выражения в стиле Perl. Видеть Обзор таблицы поиска Postfix:
pcre (только для чтения)
Таблица поиска, основанная на регулярных выражениях, совместимых с Perl. Формат файла описан в pcre_table (5). Имя таблицы поиска, используемое в
pcre:table
это имя файла регулярного выражения.регулярное выражение (только для чтения)
Таблица поиска на основе регулярных выражений. Формат файла описан в regexp_table (5). Имя таблицы поиска, используемое в
regexp:table
это имя файла регулярного выражения.
Кто-то показал мне работающую конфигурацию:
(сокращенно) /etc/postfix/main.cf:
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = mydomain.com, localhost, $myhostname
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
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical_map
/ etc / postfix / recipient_canonical_map:
/./ catchall
Это приводит к желаемому результату для доставки почты:
1 декабря 09:40:42 почтовый сервер postfix / qmgr [7943]: 58242139670: from =, size = 703, nrcpt = 1 (очередь активна) 1 декабря 09:40:42 mail-it-int postfix / smtpd [7944]: отключиться от неизвестного [192.168.5.2] ehlo = 1 mail = 1 rcpt = 1 data = 1 quit = 1 command = 5 Dec 1 09:40:42 mail-it-int postfix / local [7949]: 58242139670: to =, orig_to =, relay = local, delay = 0.01, delays = 0.01 / 0/0/0, dsn = 2.0.0, status = sent (доставлено в почтовый ящик)
... и почта, предназначенная для внешней маршрутизации, перенаправляется в локальный почтовый ящик