Добрый день!
Имеется почтовая система на postfix-2.3.8+cyrus+sasl2. Все хорошо но заметил такую особенность: можно отправить письмо и в поле отправителя подставить любой адрес, что не очень то хорошо. Решил запретить такие действия и сопоставить логин отправителя с адресом, для этого, согласно документации, добавил в main.cfsmtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
и
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps
в /etc/postfix/smtpd_sender_login_maps добавил
#${user}@mydomain.ru ${user} хотел для всех
и
user@mydomain.ru userсделал postmap /etc/postfix/smtpd_sender_login_maps
и postfix reload
Но возможность отправлять письма со своей авторизацие но от имени другого ящика осталась, ребята, где я ошибся? поискал по форумам ни у кого небыло проблем.
# postconf -nлог отправки
в /etc/postfix/smtpd_sender_login_maps должны быть записи вида
user user
или
user@domain.com user@domain.com
в зависимости от того, как хранится пользователь
>в /etc/postfix/smtpd_sender_login_maps должны быть записи вида
>user userпробовал поразному не выходит.
> #postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
inet_interfaces = all
local_recipient_maps =
mailbox_size_limit = 11000000
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
mydestination = $mydomain
mydomain = mydomain.ru
myhostname = mail.mydomain.ru
mynetworks = 127.0.0.0/8,
myorigin = $mydomain
notify_classes = resource, software
recipient_delimiter = +
relay_domains = $mydomain
sender_bcc_maps = hash:/etc/postfix/sender_bcc
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtpd_banner = SMTP MAIL Service ready
smtpd_client_restrictions = permit_mynetworks,reject_rbl_client bl.spamcop.net,reject_rbl_client zen.spamhaus.org,reject_rbl_client list.dsbl.org, permit
smtpd_data_restrictions = reject_unauth_pipelining,reject_unknown_recipient_domain, reject_unknown_sender_domain, permit
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks,permit_sasl_authenticated,check_helo_access regexp:/etc/postfix/helo_regexp, check_helo_access regexp:/etc/postfix/dul_checks,reject_invalid_hostname,permit
smtpd_recipient_limit = 100
smtpd_recipient_restrictions = reject_non_fqdn_recipient,permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_unauth_destination,reject_unknown_sender_domain,reject_unverified_recipient,reject_unlisted_recipient,reject_rbl_client dnsbl.ahbl.org,reject_rbl_client list.dsbl.org,reject_rbl_client zen.spamhaus.org,reject_rhsbl_sender dsn.rfc-ignorant.org,reject_rhsbl_sender bogusmx.rfc-ignorant, check_policy_service inet:127.0.0.1:60000,check_sender_access regexp:/etc/postfix/common_spam_senderdomain_keywords,permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = mailserver
smtpd_sasl_security_options = noanonymous
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps
smtpd_sender_restrictions = reject_unauthenticated_sender_login_mismatch
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtpd_use_tls = yes
soft_bounce = no
transport_maps = hash:/etc/postfix/transport
unknown_address_reject_code = 554
unknown_local_recipient_reject_code = 550
>лог отправкиmailserver postfix/smtpd[22441]: warning: 172.16.0.10: hostname user.mydomain.intra verification failed: Name or service not known
mailserver postfix/smtpd[22441]: 3B9B9328002: client=unknown[172.16.0.10], sasl_method=LOGIN, sasl_username=user@mailserver
mailserver postfix/cleanup[22355]: 3B9B9328002: message-id=<1292419050.5027.4.camel@user>
mailserver postfix/qmgr[22347]: 3B9B9328002: from=<user3@mydomain.ru>, size=563, nrcpt=1 (queue active)
mailserver postfix/pipe[22735]: 3B9B9328002: to=<user@mydomain.ru>, relay=spamassassin, delay=12, delays=8.4/0/0/3.8, dsn=2.0.0, status=sent (delivered via spamassassin service)
mailserver postfix/pickup[22343]: 32625328004: uid=5001 from=<user3@mydomain.ru>
mailserver postfix/cleanup[22358]: 32625328004: message-id=<1292419050.5027.4.camel@user>
mailserver postfix/qmgr[22347]: 32625328004: from=<user3@mydomain.ru>, size=888, nrcpt=1 (queue active)
mailserver cyrus/lmtpunix[22759]: WARNING: sieve script /var/spool/sieve/f/user/defaultbc doesn't exist: No such file or directory
mailserver cyrus/lmtpunix[22759]: duplicate_check: <1292419050.5027.4.camel@user> user.user 0
mailserver cyrus/lmtpunix[22759]: duplicate_check: <1292419050.5027.4.camel@user> user.user 0
mailserver cyrus/lmtpunix[22759]: duplicate_mark: <1292419050.5027.4.camel@user> user.user 1292418664 47890321266634
mailserver cyrus/lmtpunix[22759]: Delivered: <1292419050.5027.4.camel@user> to mailbox: user.user
mailserver postfix/lmtp[22360]: 32625328004: to=<user@mydomain.ru>, relay=mail.mydomain.ru[/var/run/cyrus/socket/lmtp], delay=0.24, delays=0.1/0/0/0.14, dsn=2.1.5, status=sent (250 2.1.5 Ok)отправил письмо под учетной записью user, но в адресе отправител указал user3@mydomain.ru
неделю переводил и читал документацию, пробовал по-разному. результат печален. Подталкните пожалуйста в какую сторону смотреть. чуствую решение рядом но не вижу.
отпралял пользователю user@mydomain.ru
> smtpd_sender_restrictions = reject_unauthenticated_sender_login_mismatch
>>лог отправки
> mailserver postfix/smtpd[22441]: 3B9B9328002: client=unknown[172.16.0.10], sasl_method=LOGIN,
> sasl_username=user@mailserverВас ничего не смущает?
это он при проверке ругаеться, на отправку такого нет
> это он при проверке ругаеться, на отправку такого нетПростите, нет чего?
Ваш конфиг:
smtpd_sender_restrictions = reject_unauthenticated_sender_login_mismatch
Перевожу:
Если клиент НЕ авторизовался то, берем адрес из MAIL FROM и смотрим а нет ли его (или его кусочков) в smtpd_sender_login_map, если нашли, то посылаем нафиг.Ваш лог:
mailserver postfix/smtpd[22441]: 3B9B9328002: client=unknown[172.16.0.10], sasl_method=LOGIN, sasl_username=user@mailserver
клиент АВТОРИЗОВАН
тоесть, Вы хотите сказать, что у моей задачи нет решения? каким образом "привязать" авторизованного пользователя к "ящику"?
> тоесть, Вы хотите сказать, что у моей задачи нет решения? каким образом
> "привязать" авторизованного пользователя к "ящику"?Я хочу сказать, что вы решаете вашу задачу НЕ верно.
Выше вы писали, что неделю штудировали документацию, но упорно не видите или не понимаете разницу между reject_sender_login_mismatch и reject_unauthenticated_sender_login_mismatch
Ребята поборол!!! Огромное спасибо за то что разьяснили!!!smtpd_sender_restrictions = reject_unauthenticated_sender_login_mismatch,
reject_authenticated_sender_login_mismatch,
reject_unverified_senderи в /etc/postfix/smtpd_sender_login_maps
user@mydomain.ru user@mailserver
> smtpd_sender_restrictions = reject_unauthenticated_sender_login_mismatch,
> reject_authenticated_sender_login_mismatch,можно просто написать reject_sender_login_mismatch сэкономив одно обращение к таблице)
эффект тотже будет.
Да! Вы правы! спасибо огромное!!!smtpd_sender_restrictions = reject_sender_login_mismatch, reject_unverified_sender
попутно возник вопрос возможно ли в /etc/postfix/smtpd_sender_login_maps
использовать переменные?хочу получить запись такого вида:
${user}@$mydomain ${user}@$smtpd_sasl_local_domain
чтобы не забивать каждый раз нового пользователя
> попутно возник вопрос возможно ли в /etc/postfix/smtpd_sender_login_maps
> использовать переменные?
> хочу получить запись такого вида:
> ${user}@$mydomain ${user}@$smtpd_sasl_local_domain
> чтобы не забивать каждый раз нового пользователяДля hash: нет.
Можно заставить *sql/ldap через подстановки %d и %u
или сделать тоже самое через pcre/regexp