postfix: smtpd настроен так, чтобы разрешать почту только в локальный домен?

У меня есть почтовый сервер, настроенный для домена нашей компании. Мы хотим иметь возможность получать почту на нашем домене, но мы также хотели бы иметь возможность отправлять почту на ЛЮБОЙ домен через сервер. Использование postfix/sasl в slackware box. Sendmail не установлен. Сервер находится в общедоступном ip класса А, между ним и интернетом ничего нет. SASL был создан с поддержкой LOGIN для совместимости со старыми клиентами Outlook и использует shadow в качестве метода аутентификации. Я построил 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

Спасибо!

1 ответ

Насколько я понимаю, у вас есть два сайта. Сервер 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 = allow_mynetworks, allow_sasl_authenticated, reject_unauth_destination

См. http://www.postfix.org/SASL_README.html

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

Другие вопросы по тегам