Eu quero forçar os remetentes a usar um endereço de remetente do envelope que seja idêntico ao nome de usuário de login do SASL. De o Postfix SASL README eu vejo que eu deveria listar, na opção smtpd_sender_login_maps
, uma tabela de hash que tem duas colunas idênticas e listar todos os e-mails válidos e também especificar reject_sender_login_mismatch
in smtpd_recipient_restrictions
.
Mas eu tenho a tabela de domínios e usuários virtuais do MySQL, e as coisas não são assim. Para usuários, tenho o seguinte:
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
Onde o conteúdo de mysql-virtual_mailboxes.cf
é assim:
user = dbuser
password = dbpass
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = dbhost
Isso retorna algo como domainname.com/userpart/
para o email [email protected]
. Isso não está listado nos formatos permitidos em a documentação do Postfix .
Devo alterar a consulta para um formato de saída diferente ou posso apenas adicionar reject_sender_login_mismatch
a smtpd_recipient_restrictions
e a restrição funcionará? Estou tentando as seguintes opções:
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, permit
smtpd_recipient_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_sender_login_mismatch, reject_unknown_sender_domain, permit