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 =
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/lib64/postfix mail_owner = postfix myhostname = xxx.xxx.com inet_interfaces = $myhostname, localhost, xxx.xxx.xxx.xxx unknown_local_recipient_reject_code = 550 strict_rfc821_envelopes = yes smtpd_delay_reject = yes bounce_queue_lifetime = 1d maximal_queue_lifetime = 3d minimal_backoff_time = 180s maximal_backoff_time = 6h header_checks = regexp:/etc/postfix/header_checks smtpd_banner = $myhostname ESMTP $mail_name local_destination_concurrency_limit = 5 default_destination_concurrency_limit = 10 debug_peer_level = 1 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop html_directory = /usr/share/doc/postfix-2.4.6-r2/html manpage_directory = /usr/share/man sample_directory = /etc/postfix readme_directory = /usr/share/doc/postfix-2.4.6-r2/readme virtual_mailbox_base = / virtual_mailbox_maps = ldap:ldapvirtual virtual_uid_maps = static:207 virtual_gid_maps = static:12 virtual_minimum_uid = 200 virtual_transport = virtual virtual_mailbox_domains = ldap:acceptdomains virtual_alias_maps = ldap:ldapalias ldapvirtual_server_host = yyy.yyy.com ldapvirtual_server_port = 389 ldapvirtual_version = 3 ldapvirtual_bind = yes ldapvirtual_bind_dn = cn=bind,ou=Users,dc=yyy,dc=com ldapvirtual_bind_pw = 1 ldapvirtual_search_base = ou=Mail,dc=yyy,dc=com ldapvirtual_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s))(|(AccountStatus=active)(accountStatus=shared))) ldapvirtual_result_attribute = mailMessageStore acceptdomains_server_host = yyy.yyy.com acceptdomains_server_port = 389 acceptdomains_version = 3 acceptdomains_bind = yes acceptdomains_bind_dn = cn=bind,ou=Users,dc=yyy,dc=com acceptdomains_bind_pw = 1 acceptdomains_search_base = ou=Mail,dc=yyy,dc=com acceptdomains_query_filter = (associatedDomain=%s) acceptdomains_result_attribute = associatedDomain ldapalias_server_host = yyy.yyy.com ldapalias_server_port = 389 ldapalias_version = 3 ldapalias_bind = yes ldapalias_bind_dn = cn=bind,ou=Users,dc=yyy,dc=com ldapalias_bind_pw = 1 ldapalias_search_base = ou=Mail,dc=yyy,dc=com ldapalias_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s))(|(AccountStatus=active)(AccountStatus=shared))) ldapalias_result_attribute = mail virtual_mailbox_size_limit = ldap:ldapquota ldapquota_timeout = 10 ldapquota_server_host = yyy.yyy.com ldapqouta_server_port = 389 ldapqouta_version = 3 ldapquota_bind = yes ldapquota_bind_dn = cn=bind,ou=Users,dc=yyy,dc=com ldapquota_bind_pw = 1 ldapquota_search_base = ou=Mail,dc=yyy,dc=com ldapquota_query_filter = (&(mail=%s)(accountstatus=active)) ldapquota_result_attribute = mailQuotaSize smtpd_data_restrictions = reject_unauth_pipelining smtpd_etrn_restrictions = reject smtpd_reject_unlisted_sender = yes smtpd_reject_unlisted_recipient = yes disable_vrfy_command = yes smtpd_helo_required = yes smtp_always_send_ehlo = yes smtpd_hard_error_limit = 4 smtpd_timeout = 30s smtp_helo_timeout = 15s smtp_mail_timeout = 15s smtp_rcpt_timeout = 15s smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_recipient_limit = 40 smtpd_helo_restrictions = permit_sasl_authenticated, reject_invalid_hostname, permit smtpd_sender_restrictions = permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, 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_client_restrictions = permit_sasl_authenticated, permitsmtpd_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
Грубовато но вроде пашет