Jump to content

Отправка писем извне отправителями локального домена через KSMG


Recommended Posts

Схема следующая:
есть почтовый домен, отмеченный на ksmg как локальный. С публичных адресов поток по портам 25, 465 попадает на ksmg, для этого домена настроена маршрутизация на локальный почтовый сервер на порт 25.
отправка внешней почты у почтового сервера опять же настроена на передачу на ksmg для проверки и он уже далее отправляет получателям.

вариант 1. (тут проблем нет)
клиент в локальной сети отправляет письма локальному почтовому серверу с обязательной авторизацией, тот пересылает ksmg, тот после проверки далее.

вариант 2.

клиент ВНЕ локальной сети подключается по публичному адресу на 25 порт и попадает на ksmg.
и насколько я понял, может отправить любое письмо без авторизации, т.к. ksmg про авторизацию на локальном почтовом сервере ничего не знает.
 

Как этого избежать? Понятно, что один из вариантов подключать клиентов через 587, который пробрасывается на почтовый сервер. Но порт 25 ksmg всё равно принимает, т.е. проблема так не решится.

Поможет ли мне вариант, к примеру, такой настройки - в основных параметрах МТА я для "Адрес назначения сообщений" укажу свой локальный почтовый сервер, а его отправку поменяю на отправку напрямую?

 

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
В 21.03.2024 в 16:56, mivimex сказал:

Напишите, как именно решили

для проброса авторизации (я использую проверку через запрос по imap ко внутреннему почтовому серверу) ставим Dovecot.
- правим /etc/dovecot/dovecot.conf, оставляя только imap включенным из протоколов "protocols = imap"
- правим /etc/dovecot/conf.d/10-auth.conf разрешая plaintext "disable_plaintext_auth = no". в конце отключаем все ексеншены и добавляем свой "!include auth-proxy.conf.ext"
- создаем свой экстеншен /etc/dovecot/conf.d/auth-proxy.conf.ext
passdb {
   driver = imap
   args = host=тут_ip_адрес_почтового_сервера
   default_fields = userdb_imapc_user=%u userdb_imapc_password=%w
}
userdb {
   driver = prefetch
}

правим /etc/dovecot/conf.d/10-master.conf (режем обращения со внешних адресов, добавляя "address = 127.0.0.1" и настраиваем сервис авторизации для postfix'а плюс откусывая авторизацию по локальным пользователя)
service imap-login {
  inet_listener imap {
    #port = 143
    address = 127.0.0.1
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
    address = 127.0.0.1
  }
service pop3-login {
  inet_listener pop3 {
    #port = 110
    address = 127.0.0.1
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
    address = 127.0.0.1
  }

}

service auth {
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
}

- правим /etc/dovecot/conf.d/10-ssl.conf (отключаем обязательность ssl, иначе будет для всех требовать)
ssl = no

- правим etc/dovecot/conf.d/10-logging.conf
log_path = /var/log/dovecot
auth_verbose = yes

- регистрируем в службах
systemctl enable dovecot

- перезапускаем и проверяем статус systemctl status dovecot (лог можно посмотреть tail /var/log/dovecot -f)
systemctl restart dovecot
 

настраиваем postfix (при перенастройке ksmg все это перезапишется, потому после отладки своих конфигов изменения следует внести в шаблоны ksmg /opt/kaspersky/ksmg-appliance-addon/share/master.cf.template и /opt/kaspersky/ksmg-appliance-addon/share/main.cf.template, но по согласованию с ТП Касперского)

- правим /etc/postfix/master.cf (включаем smtps, чтобы можно было авторизоваться и по 465)
smtps     inet  n       -       n       -       -       smtpd
   ...
  -o smtpd_proxy_filter=unix:/var/run/ksmg/ksmg_smtp_sock
  -o smtpd_proxy_options=speed_adjust

- правим /etc/postfix/main.cf
добавляем permit_sasl_authenticated и reject_unauthenticated_sender_login_mismatch после permit_mynetworks
smtpd_relay_restrictions =
  ...
  permit_mynetworks,
  permit_sasl_authenticated, # разрешаем отправку на внешние адреса после авторизации
  reject_unauthenticated_sender_login_mismatch, # блокируем отправку через наш сервер от имени наших пользователей без авторизации
  ...

# это как раз для блокировки без авторизации
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

# здесь добавляем механизм авторизации через dovecot в конце файла
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous

- создаем файл /etc/postfix/smtpd_sender_login_maps
@наш_домен     reject

- создаем базу smtpd_sender_login_maps.db, иначе postfix будет ругаться на отсутствие базы
postmap /etc/postfix/smtpd_sender_login_maps
(в итоге должна появиться /etc/postfix/smtpd_sender_login_maps.db)

- перезапускаем postfix
systemctl restart postfix

- проверяем статус
systemctl status postfix

в логах /var/log/maillog не должно быть явных ошибок типа нет файла smtpd_sender_login_maps.db

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...