URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97838
[ Назад ]

Исходное сообщение
"Разрешить указание From: только своему логину или алиасу"

Отправлено Тракторист , 26-Мрт-22 15:40 
Товарищи, здравствуйте!

Подскажите пожалуйста, как в связке postfix + mysql virtual users указать ограничение при отсылке писем авторизованным пользователем (user@my.domain), чтобы в поле FROM у него могли быть указаны адреса только или его алиасов (типа SELECT 1 FROM alias WHERE address=%FROM% AND goto=%AUTH_LOGIN% для стандартной таблицы postfixadmin'а.)
Чтобы если есть алиас ivan.ivanov@my.domain указывающий на учётку dir@my.domain, то с этой учётки (dir@my.domain) могла рассылатося почта только если в поле FROM стоит или dir@my.domain или ivan.ivanov@my.domain

А то правила в client_restrictions permit_sasl_authenticated - автоматически даёт позможность авторизованному пользователю вообще произвольный адрес в зоне my.domain указывать в поле FROM.


Содержание

Сообщения в этом обсуждении
"Разрешить указание From: только своему логину или алиасу"
Отправлено Тракторист , 26-Мрт-22 15:55 
Сразу, чтобы помидорами не закидывали: Не client_restrictions, а sender_restrictions :)


"Разрешить указание From: только своему логину или алиасу"
Отправлено Тракторист , 26-Мрт-22 16:45 
> Сразу, чтобы помидорами не закидывали: Не client_restrictions, а sender_restrictions
> :)

В общем я так понял в процессе изучения вопроса - это делать надо с помощью smtpd_policy.
Например на базе видимо perl'а можно это набросать. Осталось только это сделать, или в современном postfix'е есть позможность указания mysql проверки по двум аргументам сразу? Т.е. чтобы указать ему проверку при помощи запроса в который подставятся $from и $login?



"Разрешить указание From: только своему логину или алиасу"
Отправлено Тракторист , 26-Мрт-22 17:54 
Короче решил:
main.cf
smtpd_sender_login_maps = mysql:$base_directory/mysql/sender_logins.cf

mysql/sender_logins.cf
hosts   = unix:/var/mysql/mysql.sock
user    = postuser
password= postpass
dbname  = postdbname

query   = SELECT        aa.goto
          FROM          alias   aa
          JOIN          domain  bb ON bb.domain=aa.domain
          WHERE aa.address='%s'
            AND aa.active=1