LINUX.ORG.RU
ФорумAdmin

postfix


0

0

Хочу, чтобы при отправке письма пользователи не подставляли в поле FROM любой e-mail а только тот, который принадлежит им. В моем случае он совпадает с логином. Для этого в main.cf пишу нечто

smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch, reject_unknown_sender_domain, permit_sasl_authenticated

Ключевое слово как я полагаю тут - reject_authenticated_sender_login_mismatch. Но при отправке письма с любым заголовком FROM, даже правильным - сервер ругается и говорит "Sender address rejected: not owned by user" База пользователей хранится в mysql

smtpd_sender_login_maps = mysql:/usr/local/etc/postfix/sql/users.cf mysql:/usr/local/etc/postfix/sql/aliases_check.cf

Что я делаю не так?

★★★★

Во первых, настроена ли у вас SASL авторизация клиентов? А, во вторых, насколько я помню, на соответствие логину проверяется не поле письма FROM, а поле конверта MAIL FROM.

mky ★★★★★
()
Ответ на: комментарий от mky

Да, конечно, SASL настроена, авторизация проходит. Что такое "поле конверта MAIL FROM"? Под FROM я имел ввиду заголовок письма FROM, а что ещё за MAIL FROM?

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

"MAIL FROM" --- это из SMTP протокола. Один сервер соединяется с другим, дальше говорит:

MAIL FROM "от кого письмо" RCPT TO "кому письмо" DATA "Письмо со всеми заголовками, включая FROM:, TO: и т.д." QUIT

В сообщении "Sender address rejected: not owned by user", должен сообщаться и адрес и логин. Они правильные? Что в таблицах smtpd_sender_login_maps?

mky ★★★★★
()
Ответ на: комментарий от mky

Адрес и логин в сообщении, xxx@domain.ru и xxx@domain.ru соответсвенно. Т.е. e-mail совпадает с логином и они правильные.

smtpd_sender_login_maps = mysql:/usr/local/etc/postfix/sql/users.cf  mysql:/usr/local/etc/postfix/sql/aliases_check.cf

cat /usr/local/etc/postfix/sql/users.cf

user = mailer
password = xxx
dbname = mail
table = users
select_field = maildir
where_field = login
additional_conditions = and expired = '0'
hosts = localhost

gobot ★★★★
() автор топика
Ответ на: комментарий от mky

Да, в каком порядке должны идти правила? Если я ставлю самое первое 
permit_sasl_authenticated, то постфикс вообще никак не замечает 
reject_authenticated_sender_login_mismatch, а если ставлю после 
reject_authenticated_sender_login_mismatch, то срабатывает, но только 
ругается на все FROM адреса, даже правильные.

smtpd_sender_restrictions = 
permit_sasl_authenticated, 
reject_authenticated_sender_login_mismatch, 
reject_unknown_address, 
reject_unknown_sender_domain, 
reject_unauth_pipelining,
reject_unlisted_sender, 
reject_unauth_destination

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

smtpd_sender_login_maps нужен для того, чтобы по MAIL FROM узнать логин и затем сверить с логином, по которому прошла аутентификация.

В вашем случае в таблице хранятся логины в форме почтового адреса, поэтому в файле /usr/local/etc/postfix/sql/users.cf нужно вместо строки "select_field = maildir" написать строку "select_field = login".

По поводу порядка правил. В начале надо reject_authenticated_sender_login_mismatch, а ругался postfix так как была неправильная настройка таблицы smtpd_sender_login_maps.

Ну а с алиасами надо будет отдельно разбираться...

mky ★★★★★
()

afaik, как было сказано в посте выше, авторизация проходит по полю FROM в заголовке, а то, что там написано в from самого сообщения, для MTA фиолетово, он на это в процессе авторизации не смотрит. имхо, штатными средствами постфикса или экзима этого не сделать, разве что как-то извратиться при помощи фильтров...

bsh ★★★
()
Ответ на: комментарий от gobot

>Что такое "поле конверта MAIL FROM"? Под FROM я имел ввиду заголовок письма FROM, а что ещё за MAIL FROM?

http://www.ietf.org/rfc/rfc0821.txt

прочти часть 3. THE SMTP PROCEDURES

bsh ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.