SASL в postfix [solved]
HolyBoy 18 Августа, 2008 - 00:22
Итак:
mail-mta/postfix-2.4.6-r2(12:11:39 26.03.2008)(ipv6 ldap pam sasl ssl -cdb -dovecot-sasl -hardened -mailwrapper -mbox -mysql -nis -postgres -selinux -vda)
# postconf | grep sasl broken_sasl_auth_clients = yes lmtp_sasl_auth_enable = no lmtp_sasl_mechanism_filter = lmtp_sasl_password_maps = lmtp_sasl_path = lmtp_sasl_security_options = noplaintext, noanonymous lmtp_sasl_tls_security_options = $lmtp_sasl_security_options lmtp_sasl_tls_verified_security_options = $lmtp_sasl_tls_security_options lmtp_sasl_type = cyrus send_cyrus_sasl_authzid = no smtp_sasl_auth_enable = no smtp_sasl_mechanism_filter = smtp_sasl_password_maps = smtp_sasl_path = smtp_sasl_security_options = noplaintext, noanonymous smtp_sasl_tls_security_options = $smtp_sasl_security_options smtp_sasl_tls_verified_security_options = $smtp_sasl_tls_security_options smtp_sasl_type = cyrus smtpd_client_restrictions = permit_sasl_authenticated, permit smtpd_helo_restrictions = permit_sasl_authenticated, reject_invalid_hostname, permit smtpd_recipient_restrictions = reject_unauth_pipelining, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, check_policy_service inet:127.0.0.1:2501, permit smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = no smtpd_sasl_exceptions_networks = smtpd_sasl_local_domain = smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_tls_security_options = $smtpd_sasl_security_options smtpd_sasl_type = cyrus smtpd_sender_restrictions = permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, permit
# cat /etc/sasl2/smtpd.conf # $Header: /var/cvsroot/gentoo-x86/mail-mta/postfix/files/smtp.sasl,v 1.2 2004/07/18 03:26:56 dragonheart Exp $ pwcheck_method: saslauthd mech_list: CRAM-MD5 DIGEST-MD5 PLAIN LOGIN log_level: 3
# ps aux | grep sasl root 7316 0.0 0.0 37004 812 ? Ss Aug17 0:00 /usr/sbin/saslauthd -a ldap root 7317 0.0 0.0 37004 588 ? S Aug17 0:00 /usr/sbin/saslauthd -a ldap root 7318 0.0 0.0 37004 572 ? S Aug17 0:00 /usr/sbin/saslauthd -a ldap root 7319 0.0 0.0 37004 572 ? S Aug17 0:00 /usr/sbin/saslauthd -a ldap root 7320 0.0 0.0 37004 572 ? S Aug17 0:00 /usr/sbin/saslauthd -a ldap root 7501 0.0 0.0 7044 816 pts/1 R+ 00:15 0:00 grep --colour=auto sasl
Итак, с этим всем у меня работает авторизация, если я хочу с ней работать: находятся пользователи и пароли.
А вот сам вопрос:
$ telnet mail.domain.dom 25 Trying xxx.xxx.xxx.xxx... Connected to mail.painthouse.ru. Escape character is '^]'. 220 mail.dom.dom ESMTP Postfix ehlo ya.ru 250-gate.ph.com 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN 250-AUTH=CRAM-MD5 DIGEST-MD5 LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:user@yandex.ru 250 2.1.0 Ok rcpt to:user@domain.dom 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> test test . 250 2.0.0 Ok: queued as 7890C4582 quit 221 2.0.0 Bye Connection closed by foreign host.
Никак не пойму, почему не требует авторизацию. Уже вторую неделю вопрос этот мучает.
»
- Для комментирования войдите или зарегистрируйтесь
покажи
покажи main.cf
_______________________
From Siberia with Love!
queue_directory =
smtpd_helo_restrictions =
Что, по-твоему, означает permit в конце каждой сентенции? Этой штукой ты все всем разрешил. Спускай сервер быстро, он у тебя открытым релеем работает. Замени все permit на permit_mynetwork, пропиши переменную mynetwork.
Делай это срочно, если сервер в в продакшене.
_______________________
From Siberia with Love!
Это один из
Это один из вариантов main.cf дал.
На самом деле, с пермитом в конце открытого релея нет. Тестировал. Но на продакшене его нет, естесна, ибо незачем размножать сущности.
Другое дело, что даже без permit сервер может принимать от всех на существующие ящики и не спрашивает авторизацию.
permit_mynetwork не хочу. Предположим, я никому не доверяю даже в своей сети. Максимум, что поставить можно: 127.0.0.1/8
Ведь проблема то не в permit_network или еще в чем-то. reject_что-то_там все срабатывают, а вот permit_sasl_authenticated почему-то игнорируется. Вот это и бесит.
Ндя...
Ндя... Уважаемый, вы как себе представляете работу почтового сервера? Задача (правильно) настроенного сервера - принимать все письма (в идеале, спам не в счет) на почтовые ящики своего домена (доменов). SASL будет подключаться при отправке сообщений на внешний домен, ты аутентифицируешь себя для использования сервера в качестве открытого релея. Пляски с конфигом мне вообще непонятны, что мешало сразу дать нормальный конфиг?
_______________________
From Siberia with Love!
Этот конфиг
Этот конфиг нормальный. Порядок упоминаний permit и reject тоже важен.
© http://www.elantech.ru/docs/postfix-docs-ru/SMTPD_ACCESS_README.html
Поэтому, нет там ошибки, точнее, не там ошибка. Вот если бы permit стоял в самом начале… :)
Еще раз попробую объяснить, что мне не нравится.
Я отключаю permit_mynetworks, т.о. это не влияет на результат. Подсоединяюсь к серверу напрямую, без использования sasl — пускает, подсоединяюсь без sasl — пускает. Зачем тогда оно надо, если без авторизации на сервер пускает?
Попробуй
Попробуй отправить письмо со своего домена в чужой.
_______________________
From Siberia with Love!
Ага,
Ага, понял.
Теперь, оно требует авторизацию. :)
Спасибо.
Вроде как стоит
Вроде как стоит у человека строка
reject_unauth_destination
Посему, имхо, ни разу не открытый релей он.
---
Делай, что должен, и будь, что будет.
Не прошло и года©
Как я таки выкроил время и добил эту задачу. Теперича при отправке с любого домена: хоть со «своего», хоть с чужого через наш сервер, нужна авторизация.
Та же задача. Написал бы как
Та же задача. Написал бы как решил.
Postfix
Да напишите плз. Очень нужно
Авторизация в postfix
У меня получилось. Есть еще варианты?
часть main.cf
smtpd_recipient_restrictions =
правила_общие_антиспам_rfc
permit_sasl_authenticated
permit_mynetworks
reject_unauth_destination
check_sender_access hash:/etc/postfix/rhsbl_sender_exceptions
правила_для_сервов, блеклисты
cat /etc/postfix/rhsdl_sender_exceptions
my_domain.tld REJECT
Грубовато но вроде пашет