Назад | Перейти на главную страницу

postfix - действует как ретранслятор, но не доставляет

Я бы хотел, чтобы мой постфиксный сервер действовал как ретранслятор / интеллектуальный хост для некоторых клиентов, но хотел бы доставлять всю почту в локальный (в стиле 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 (доставлено в почтовый ящик)

... и почта, предназначенная для внешней маршрутизации, перенаправляется в локальный почтовый ящик