SASL в postfix [solved]

Итак:

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, permit

smtpd_helo_restrictions =

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, permit

Что, по-твоему, означает 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 тоже важен.

Цитата:
Каждый список ограничений обрабатывается слева направо до тех пор, пока какое-либо ограничение не выдаст результат PERMIT (разрешить), REJECT (отклонить) или DEFER (отложить для последующей повторной попытки). Достижение конца списка эквивалентно получению результата PERMIT. Указывая ограничение PERMIT перед ограничением REJECT, вы можете делать исключение для определенных клиентов или пользователей (т.н. белые списки, whitelisting).

© 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

Грубовато но вроде пашет

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".