LINUX.ORG.RU
ФорумAdmin

Миграция почтового релея с Windows Server на CentOS 8

 , ,


0

1

Решили устроить частичный вендекапец и перейти с Windows Server 2012 на Linux CentOS 8 и начать с почтовых relay.

Задача сводится к миграции с аналогичными настройками, но на Linux. С postfix я никогда не работал, но мануалы покурил и за меня делать не надо, проблема в другом.

В Windows Server три виртульных SMTP, два из которых привязаны к одному и тому же домену, но к разным портам. Для postfix нельзя указать один и тот же домен дважды для разных портов, выкидывает ошибку:

Jun  4 15:44:19 relay_server postfix/postmap[2526]: warning: virtual_transport.db: duplicate entry: "domain.ru"

На всякий случай, вот настройки на сервере Windows:

FQDN: mail.domain.ru
Домен: domain.ru
IP-адрес domain.ru: 270.24.83.12
Проверка подлинности: обычная + встроенная Windows
Ретрансляция: для всех, прошедших проверку

main.cf: https://pastebin.com/Wessgk6B

Файл /etc/postfix/db/virtual_transport:

domain.ru smtp:[270.24.83.12]:25

Собственно, вопрос такой: как на один домен навесить несколько портов и как вообще мой конфиг, нормально ли написан? Ну и, если вдруг не трудно, то как привязать авторизацию AD, как было в Windows? Гугл тряс, он не помог.

Ответ на: комментарий от anonymous

Это где-нибудь есть в RFC об SMTP? Конечно, нет. Сервер настраивал не я, но задача - перенести, как было. Может, кто-то просто сталкивался с таким. Скриншот:

https://i.ibb.co/y8DW5Ck/image.png

В «доменном имени» - имя серверя-релея. Не пони-маю.

Fedorast ()

virtual_transport указывает, куда пересылать письма для определенного домена. Естественно запись может быть только одна и должна она содержать адрес вашего почтового сервера с ящиками.

Если вы хотите постфиксом слушать несколько портов (и, по желанию, с разными настройками), то дополнительные порты указываются в master.cf (вы его не упомянули, потому не знаю, изменяли ли его). Но изначально зависимости порт<->домен нет. Вы можете просто добавить порт в master.cf и он будет использовать ту же конфигурацию, что и в main.cf

Какую суть несет порт 37490 в вашем виндовом релее?

У вас релэй висит в интернете и принимает/отправляет письма из мира / в мир? или вы на него еще почтовых клиентов настраиваете?

keir ★★ ()
Ответ на: комментарий от keir

(вы его не упомянули, потому не знаю, изменяли ли его). Нет, не изменял.

Какую суть несет порт 37490 в вашем виндовом релее? А чёрт его знает. Если я правильно понял, то на 25-порт письма принимаются, там как-то обрабатываются, а затем пересылаются на Exchange. Сервер непонятный и зачем он, вообще, нужен, тоже не ясно. Думаю обойтись без него.

У вас релэй висит в интернете и принимает/отправляет письма из мира / в мир? Да, но только из мира, только входящие. Планируется проверять на спам, на вирусы, вот это всё, но пока хотя бы сам релей настроить нормально, хотя бы с 25-ым портом. Не подскажете, кстати, где можно найти типовые конфиги для этой ситуации? В гугле есть, но кусочками и слишком отличающиеся друг от друга.

Fedorast ()

Вариант на случай «не получается вообще никак»: для postfix, как и для почти любой программы, можно создать несколько вариантов конфигов, и запустить несколько копий сервиса - каждый со своей конфигурацией. При таком подходе можно сделать абсолютно всё, например, персональный список доменов для postfix-а, висящего на определённом порту.
Но лучше конечно попытаться сделал всё в одном, это более спортивно.

spirit ★★★★★ ()
Ответ на: комментарий от Fedorast

типовых конфигов как таковых нету - всегда разные условия проверки доменов/пользователей, разные способы использования антиспама/антивируса, проверка заголовков письма и т.д. Поэтому надо исходить только из задач, которые вы хотите решить.

По факту для приема писем вам нужен только 25 порт и транспорт для домена (который вы уже указали). Про остальные порты, используемые в windows server, можете не вспоминать - любой удаленный сервер будет обращаться к вам только по 25 порту.

У меня была пачка релеев с AD/Exchange на прошлой работе, если раскопаю в своем бардаке файлов конфиги, покажу )

keir ★★ ()
Ответ на: комментарий от keir

У меня была пачка релеев с AD/Exchange на прошлой работе, если раскопаю в своем бардаке файлов конфиги, покажу )

О, я был бы очень благодарен :) Не списывать, а лишь сравнить, просмотреть, что у меня может быть не так.

Идея с пачкой сервисов очень хороша, можно попробовать, но мне кажется, что старые инженеры что-то перемудрили с несколькими виртуальными SMTP. Может, антиспам какой прикручивали or so.

Fedorast ()
Ответ на: комментарий от Fedorast

но мне кажется, что старые инженеры что-то перемудрили с несколькими виртуальными SMTP.

Контактов этих инженеров не осталось? В таких ситуациях самое простое и самое правильное решение - поговорить со специалистами, создававшими текущую конфигурацию сервисов.

Serge10 ★★★★★ ()
Ответ на: комментарий от vasya_pupkin

Начни с понимания того, зачем этот бред там нагородили…

Что-то вроде того, что на разных портах разные разрешения. Вот вообще не понимаю, может, сообщество с таким сталкивалось.

Fedorast ()
Ответ на: комментарий от FireFighter

Сервер в домене, вопрос, скорее, в том, как проверять список корректных e-mail в postfix. В официальной книге очень мутный алгоритм выгрузки данных из Exchange и передачи на сервер через SCP, но это не метод.

Fedorast ()

Вопросы читсо организационные.

Сколько тебе платят за переезд?

Куда убежали предыдущие, которые накрутили весь этот бред, но, что весело, таки ШинСервер - очень гибкая система, зачем её менять?

И что будет, если новая Линукс башня из костылей завалится?

anonymous ()
Ответ на: комментарий от Fedorast
smtpd_sender_login_maps = ldap:/etc/postfix/ldap-smtpd_sender_login_maps.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap-virtual_mailbox_maps.cf
virtual_mailbox_domains = domain.ru, domain.ltd, domain.aero
virtual_transport = hash:/etc/postfix/virtual_transport

/etc/postfix/ldap-smtpd_sender_login_maps.cf:

debuglevel = 0
search_base = dc=domain, dc=ltd
#server_host = ldap://domain.ltd
#server_port = 389
server_host = ldaps://domain.ltd
server_port = 636
ldap_timeout = 10
query_filter = (&(|(objectClass=group)(objectClass=user))(proxyaddresses=smtp:%s))
leaf_result_attribute = proxyAddresses
result_format = %s
special_result_attribute =
scope = sub
bind = yes

bind_dn = ldap-mailgates@domain.ltd
bind_pw = 1234567890abcdef

cache = no
dereference = 0
domain = domain.ru, domain.ltd, domain.aero
version = 3

/etc/postfix/ldap-virtual_mailbox_maps.cf:

debuglevel = 0
search_base = dc=domain, dc=ltd
#server_host = ldap://domain.ltd
#server_port = 389
server_host = ldaps://domain.ltd
server_port = 636
ldap_timeout = 10
query_filter = (proxyaddresses=*smtp:%s*) 
result_attribute = canonicalName
result_format = %s
special_result_attribute =
scope = sub
bind = yes

bind_dn = ldap-mailgates@domain.ltd
bind_pw = 1234567890abcdef

cache = no
dereference = 0
domain = domain.ru, domain.ltd, domain.aero
version = 3

/etc/postfix/virtual_transport:

domain.ru smtp:[exch-roundrobin.domain.ltd]
domain.ltd smtp:[exch-roundrobin.domain.ltd]
domain.aero smtp:[exch-roundrobin.domain.ltd]
keir ★★ ()