The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Перенаправление сообщений на другой почтовый сервер"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от buddy67 (ok), 28-Ноя-19, 12:54 
Добрый день.

Прошу помощи :-).

Есть почтовый сервер postfix+dovecot.
Несколько почтовых доменов.
Пользователи прописаны в virtual:

user1@domain.com user1
user2@domain2.com user2
user3@domain2.com user3
и пр.

Необходимо сообщения, например для user2, перенаправлять на другой сервер, откуда он сможет их забрать.

Я попробовал сделать через transport_map.
типа "user2@domain2.com smtp:AA.BB.CC.DD"
Не вышло - сообщение всё равно приходит юзеру на основной сервер.

Попробовал, добавив в main.cf "luser_relay = $user@AA.BB.CC.DD" и убрав "user2@domain2.com user2" из virtual. Postfix ругается, что user2 отсутствует в virtual, что наверно логично.

Подскажите, что где я упускаю?

Спасибо!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от Licha Morada (ok), 28-Ноя-19, 19:10 
> Необходимо сообщения, например для user2, перенаправлять на другой сервер, откуда он сможет
> их забрать.
> Я попробовал сделать через transport_map.
> типа "user2@domain2.com smtp:AA.BB.CC.DD"

Ваши сервера, наверное, смотрят на запись MX для домена domain2.com, а там записан первый сервер.

Почему бы не содать на "другом" сервере ящик типа user2@domain3.com, а Постфиксу на "основном" указать алиас? Сообщение будет доставленно куда надо, хедеры to и from останутся как были.
Можно просто сделать алиас без ящика, можно с ящиком и тогда будут копии каждого сообщения и там и там.

> Не вышло - сообщение всё равно приходит юзеру на основной сервер.

А на "другой" оно при этом тоже приходит? А в логах это как отражается?
IMHO, это не совсем адекватное решение, но всё равно интересно разобраться.
Подозреваю, что как только сервер увидел что domain2.com это "у нас", на transport_map он уже не смотрит.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от Аноним (2), 29-Ноя-19, 10:18 
> IMHO, это не совсем адекватное решение,

? чем оно неадекватное?

> Подозреваю, что как только сервер увидел что domain2.com это "у нас", на
> transport_map он уже не смотрит.

Ну как это не смотрит...  похожая схема - постфикс в качестве шлюза для эксчейнджа. Приходящая почта вся "у нас", но в соответствии с transport_map часть оседает локально, часть раскидывается по алиасам, все остальное сливается эксчейнджу...

ТС, похоже, чего-то недоговаривает, логи и конфиги в студию...


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от buddy67 (ok), 29-Ноя-19, 12:54 
>> IMHO, это не совсем адекватное решение,
> ? чем оно неадекватное?
>> Подозреваю, что как только сервер увидел что domain2.com это "у нас", на
>> transport_map он уже не смотрит.
> Ну как это не смотрит...  похожая схема - постфикс в качестве
> шлюза для эксчейнджа. Приходящая почта вся "у нас", но в соответствии
> с transport_map часть оседает локально, часть раскидывается по алиасам, все остальное
> сливается эксчейнджу...
> ТС, похоже, чего-то недоговаривает, логи и конфиги в студию...

Добрый день.

Да, не всё сразу написал, к сожалению. Понадеялся на себя :-/
Я хочу максимально плавно перевести часть пользователей domain.com на exchange, оставив пока большинство на posfix.
domain2.com, который приведён в качестве примера, можно, наверно не рассматривать, так большинство пользователей находятся в domain.com.

postconf -n:
alias_maps = hash:/etc/postfix/alias_maps
biff = no
canonical_maps = hash:/etc/postfix/canonical
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter =
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
defer_transports =
delay_warning_time = 1h
disable_dns_lookups = no
disable_mime_output_conversion = no
disable_vrfy_command = yes
html_directory = /usr/share/doc/packages/postfix-doc/html
inet_interfaces = all
inet_protocols = ipv4
mail_owner = postfix
mail_spool_directory = /var/mail
mailbox_command =
mailbox_size_limit = 500000000
mailbox_transport =
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
masquerade_classes = envelope_sender, header_sender, header_recipient
masquerade_domains =
masquerade_exceptions = root
maximal_backoff_time = 600s
maximal_queue_lifetime = 1d
message_size_limit = 50000000
message_strip_characters = \0
milter_command_timeout = 180
milter_connect_macros = j _ {daemon_name} {if_name} {if_addr}
milter_connect_timeout = 180
milter_content_timeout = 600
milter_default_action = tempfail
milter_helo_macros = {tls_version} {cipher} {cipher_bits} {cert_subject} {cert_issuer}
milter_mail_macros = i {auth_type} {auth_authen} {auth_ssf} {auth_author} {mail_mailer} {mail_host} {mail_addr}
milter_protocol = 3
milter_rcpt_macros = {rcpt_mailer} {rcpt_host} {rcpt_addr}
mydestination = $myhostname, localhost.$mydomain
myhostname = имя_хоста
mynetworks = сеть
mynetworks_style = subnet
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix-doc/README_FILES
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
relay_clientcerts =
relay_domains = $mydestination, hash:/etc/postfix/relay
relay_recipient_maps = hash:/etc/postfix/relay_recipients
relayhost =
relocated_maps = hash:/etc/postfix/relocated
sample_directory = /usr/share/doc/packages/postfix-doc/samples
sender_bcc_maps = hash:/etc/postfix/sender_bcc
sender_canonical_maps = hash:/etc/postfix/sender_canonical
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
smtp_enforce_tls = no
smtp_sasl_auth_enable = no
smtp_sasl_password_maps =
smtp_sasl_security_options =
smtp_tls_CAfile =
smtp_tls_CApath =
smtp_tls_cert_file =
smtp_tls_key_file =
smtp_tls_session_cache_database =
smtp_use_tls = no
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions =
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
smtpd_milters = unix:/var/run/klms/klms_milter_sock
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtpd_sasl_auth_enable = no
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_tls_CAfile =
smtpd_tls_CApath =
smtpd_tls_ask_ccert = no
smtpd_tls_cert_file =
smtpd_tls_key_file =
smtpd_tls_received_header = no
smtpd_use_tls = no
strict_8bitmime = no
strict_rfc821_envelopes = no
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550
virtual_alias_domains = hash:/etc/postfix/virtual
virtual_alias_maps = hash:/etc/postfix/virtual

/etc/postfix/virtual:
domain.com anything
user1@domain.com user1
user2@domain.com user2
user3@domain.com user3

/etc/postfix/alias_maps
пуст

/etc/postfix/transport
user2@domain.com smtp:AA.BB.CC.DD

где AA.BB.CC.DD - адрес второго сервера.

Содержимое каких ещё файлов запостить?

Спасибо!


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от Licha Morada (ok), 29-Ноя-19, 20:08 
> Я хочу максимально плавно перевести часть пользователей domain.com на exchange, оставив
> пока большинство на posfix.

Пилотный запуск перед миграцией? А то кое-кто тоже хотел плавно и рубил хвост собаке по частям.

> /etc/postfix/transport
> user2@domain.com smtp:AA.BB.CC.DD

Чисто умозрительно, там должно быть что-то вроде:
user2@domain.com relay:[AA.BB.CC.DD]
* :

Если локальных пользователей меньше, то можно сделать наоборот, прописать прямо кто свой, а остальных слать на релей:
user1@domain.com :
user3@domain.com :
* relay:[AA.BB.CC.DD]

Уважаемый Аноним выше, похоже, держит конфигурацию для решения экивалентной задачи. Может, поделится проверенным примером.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от Аноним (6), 29-Ноя-19, 22:45 
> Уважаемый Аноним выше, похоже, держит конфигурацию для решения экивалентной задачи. Может,
> поделится проверенным примером.

% postconf -n
alias_database = hash:/etc/aliases
command_directory = /usr/local/sbin
compatibility_level = 2
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
default_destination_recipient_limit = 5
default_privs = nobody
disable_vrfy_command = yes
header_checks = pcre:/usr/local/etc/postfix/acls/header_checks
home_mailbox = Maildir/
html_directory = /usr/local/share/doc/postfix
inet_interfaces = all
inet_protocols = ipv4
insiders_only = check_sender_access hash:/usr/local/etc/postfix/acls/local_domains, reject
local_only = check_recipient_access hash:/usr/local/etc/postfix/acls/local_domains, reject
local_recipient_maps =
mail_owner = postfix
mailbox_command = /usr/local/bin/procmail
mailbox_size_limit = 0
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
message_size_limit = 52428800
milter_default_action = accept
milter_protocol = 6
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = domain1.ru
myhostname = mx2.domain1.ru
mynetworks = 127.0.0.0/8, 10.0.0.46/32, 10.0.10.19/32
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/local/share/doc/postfix
relay_domains = $mydestination
sample_directory = /usr/local/etc/postfix
sender_bcc_maps = hash:/usr/local/etc/postfix/acls/sender_bcc_map
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
smtp_generic_maps = hash:/usr/local/etc/postfix/acls/generic_map
smtpd_banner = $myhostname SMTP
smtpd_client_restrictions = permit_mynetworks check_recipient_access hash:/usr/local/etc/postfix/acls/postmaster_access check_sender_access hash:/usr/local/etc/postfix/acls/sender_access check_client_access hash:/usr/local/etc/postfix/acls/spammers check_client_access hash:/usr/local/etc/postfix/acls/spammers_ip check_client_access cidr:/usr/local/etc/postfix/acls/spammers_cidr check_client_access pcre:/usr/local/etc/postfix/acls/client_pcre check_client_access hash:/usr/local/etc/postfix/acls/helo_access check_client_access hash:/usr/local/etc/postfix/acls/sender_access
smtpd_data_restrictions = check_recipient_access hash:/usr/local/etc/postfix/acls/postmaster_access permit_sasl_authenticated permit_mynetworks reject_non_fqdn_sender reject_non_fqdn_recipient reject_unknown_recipient_domain reject_unknown_sender_domain reject_unauth_pipelining reject_unauth_destination check_policy_service unix:private/spf-policy check_policy_service inet:127.0.0.1:10023
smtpd_delay_reject = yes
smtpd_etrn_restrictions = reject
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_sasl_authenticated permit_mynetworks check_recipient_access hash:/usr/local/etc/postfix/acls/postmaster_access check_helo_access hash:/usr/local/etc/postfix/acls/helo_access reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname
smtpd_milters = unix:/var/run/clamav/clmilter.sock
smtpd_recipient_restrictions = hash:/usr/local/etc/postfix/acls/protected_destinations check_sender_access hash:/usr/local/etc/postfix/acls/restricted_senders check_recipient_access hash:/usr/local/etc/postfix/acls/postmaster_access permit_sasl_authenticated permit_mynetworks reject_non_fqdn_recipient reject_unknown_recipient_domain reject_unauth_destination
smtpd_restriction_classes = local_only, insiders_only
smtpd_sender_restrictions = permit_sasl_authenticated permit_mynetworks check_recipient_access hash:/usr/local/etc/postfix/acls/postmaster_access check_sender_access hash:/usr/local/etc/postfix/acls/sender_access reject_unknown_sender_domain reject_unverified_sender reject_non_fqdn_sender
smtpd_tls_cert_file = /usr/local/etc/letsencrypt/live/mx2.domain1.ru/fullchain.pem
smtpd_tls_key_file = /usr/local/etc/letsencrypt/live/mx2.domain1.ru/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
spf-policy_time_limit = 3600
strict_rfc821_envelopes = yes
transport_maps = hash:/usr/local/etc/postfix/transport_map
unknown_local_recipient_reject_code = 550


% less transport_map
admin@domain1.ru smtp:[10.0.0.46]
hostmaster@domain1.ru smtp:[10.0.0.46]
#
# local users
#
info@domain1.ru local:localhost
help@domain1.ru local:localhost
contact@domain1.ru local:localhost
#
# all other sent to exchange
#
#domain1.ru smtp:[10.0.0.9]
domain1.ru smtp:[owa.domain1.ru]


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от buddy67 (ok), 10-Дек-19, 14:45 
Добрый день.

Никак я не разберусь с просмотром таблиц. :-(
Похоже, упирается в то, что пользователи прописаны в virtual_alias_maps.
И до просмотра transport просто не доходит.

Приём почты для существующего пользователя заканчивается укладкой почты в локальный mailbox, для несуществующего - сообщением в логе "User unknown in virtual alias table".

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

4. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от Licha Morada (ok), 29-Ноя-19, 19:49 
>> IMHO, это не совсем адекватное решение,
> ? чем оно неадекватное?

не совсем адекватное != неадекватное
Разница как между "неполным служебным соответствием" и "служебным несоответствием".
В принципе, работает, если заставить, но трудно поддерживать.

А по существу, я неправильно понял задачу. Думал, надо конкретные To: раскидывать по разным серверам, но "основной" сервер остаётся в работе. Мы это делаем через форвардеры, т.к. это легко описать на разных уровнях абстракции, хоть в postfix, хоть в cpanel, хоть по телефону человеку из managed service.

>> Подозреваю, что как только сервер увидел что domain2.com это "у нас", на
>> transport_map он уже не смотрит.
> Ну как это не смотрит...  похожая схема - постфикс в качестве
> шлюза для эксчейнджа. Приходящая почта вся "у нас", но в соответствии
> с transport_map часть оседает локально, часть раскидывается по алиасам, все остальное
> сливается эксчейнджу...

Вы правы. Я почему-то подумал что там жёсткий приоритет у директив которые описывают, что делать с почтой.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "Перенаправление сообщений на другой почтовый сервер"  +/
Сообщение от buddy67 (ok), 02-Дек-19, 12:09 
Коллеги Licha Morada и Аноним!

Спасибо вам большое за помощь и подсказки,
буду пробовать на неделе разрулить почту!

Надеюсь, всё получится.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру