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

postfix: smtpd настроен на разрешение почты только в / из локального домена?

У меня настроен почтовый сервер для домена нашей компании. Мы хотим иметь возможность получать нашу почту на основе домена, но мы также хотели бы иметь возможность отправлять электронную почту в ЛЮБОЙ домен через сервер. Использование postfix / sasl в Slackware Box. Sendmail не установлен. Сервер находится на общедоступном IP-адресе класса A, между ним и Интернетом нет ничего. SASL был построен с поддержкой LOGIN, чтобы быть совместимым со старыми клиентами Outlook, и использует тень в качестве метода аутентификации. Я построил SASL с поддержкой sql, используя postgres. Я планирую перейти на этот метод, как только устраню все ошибки в моей нынешней настройке. Аутентификация с использованием SASL, похоже, работает.

Моя нынешняя конфигурация работает в том, что мы можем нормально отправлять и получать электронную почту на основе домена, но любая электронная почта, адресованная другим доменам, не отправляется («ретранслируется», я думаю, правильный термин?). Но это странно: похоже, я могу отправлять электронную почту в Gmail и в другие домены, но другие сотрудники, которые работают в другом месте, используя Outlook 2000, не могут отправлять электронную почту за пределы нашего домена. Я использую Gmail и Thunderbird в качестве клиентов для отправки / получения, и, похоже, у меня нет проблем. Не могли бы вы взглянуть на мою конфигурацию и сказать, есть ли какие-то настройки, которые нужно добавить / удалить / изменить? Кроме того, сообщите мне, если необходимо внести какие-либо изменения в систему безопасности.

Вот результат postconf -n:

alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain
mydomain = mydomain.com
myhostname = mail.mydomain.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
notify_classes = resource, software
queue_directory = /var/spool/postfix
readme_directory = no
relay_domains =
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
soft_bounce = no
unknown_local_recipient_reject_code = 550

Спасибо!

Насколько я понимаю, у вас два сайта. Сервер Postfix находится на сайте A, и все пользователи могут его использовать в обычном режиме. Однако с сайта B пользователи могут отправлять почту только внутри домена, а не куда-либо еще.

Короткий быстрый ответ - добавить IP-адрес (а) сайта B в переменную mynetworks в main.cf.

Чуть более длинный ответ:

Postfix передает решения в smtpd_recipient_restrictions. Это список проверок для входящего сообщения.

Postfix принимает почту со всего мира и отправляет по всему миру. Чтобы гарантировать, что Postfix не является открытым реле, значения по умолчанию немного ограничительны:

Почта со всего мира (0.0.0.0/0) будет перенаправляться на домены, явно указанные в конфигурации. Почта с IP-адресов из белого списка будет ретранслироваться в любой домен, независимо от того, настроен этот домен локально или нет.

Значения по умолчанию для этих переменных - mydestination и mynetworks.

Поскольку вы изучаете SMTP AUTH, вот что вам нужно добавить:
smtpd_recipient_restrictions = permission_mynetworks, permission_sasl_authenticated, reject_unauth_destination

Видеть http://www.postfix.org/SASL_README.html#server_sasl_authz

Убедитесь, что ваши удаленные системы настроены для фактической аутентификации на сервере.