Postfix: validar os endereços dos remetentes com recipient_delimiter

0

Eu tenho uma instância Postfix como parte de uma configuração modoboa que verifica se os usuários autenticados só podem enviar a partir de endereços de e-mail próprios usando as seguintes regras ( main.cf ):

…
smtpd_sender_login_maps =
    ${db_driver}:/shared/modoboa/postfix/sql-sender-login-mailboxes.cf
    ${db_driver}:/shared/modoboa/postfix/sql-sender-login-aliases.cf
    ${db_driver}:/shared/modoboa/postfix/sql-sender-login-mailboxes-extra.cf

smtpd_sender_restrictions =
    permit_mynetworks
    reject_sender_login_mismatch
    permit
…
recipient_delimiter = -

Com os seguintes arquivos de pesquisa de mapa de login (gerados por modoboa na inicialização, incluídos apenas para conclusão !):

/shared/modoboa/postfix/sql-sender-login-mailboxes.cf :

# This file was generated on Jan. 7, 2018, 5:55 p.m. by running:
# manage.py generate_postfix_maps --destdir /shared/modoboa/postfix
# DO NOT EDIT!
user = modoboa
password = IMNOTTHATDUMB
dbname = modoboa
hosts = postgresql
query = SELECT email FROM core_user WHERE email='%s' AND is_active

/shared/modoboa/postfix/sql-sender-login-aliases.cf :

# This file was generated on Jan. 7, 2018, 5:55 p.m. by running:
# manage.py generate_postfix_maps --destdir /shared/modoboa/postfix
# DO NOT EDIT!
user = modoboa
password = IMNOTTHATDUMB
dbname = modoboa
hosts = postgresql
query = SELECT mb.address || '@' || dom.name FROM admin_mailbox mb INNER JOIN modoboa_admin_aliasrecipient alr ON alr.r_mailbox_id=mb.id INNER JOIN admin_domain dom ON dom.id=mb.domain_id INNER JOIN admin_alias al ON alr.alias_id=al.id WHERE al.enabled AND al.address='%s'

/shared/modoboa/postfix/sql-sender-login-mailboxes-extra.cf :

# This file was generated on Jan. 7, 2018, 5:55 p.m. by running:
# manage.py generate_postfix_maps --destdir /shared/modoboa/postfix
# DO NOT EDIT!
user = modoboa
password = IMNOTTHATDUMB
dbname = modoboa
hosts = postgresql
query = SELECT mb.address || '@' || dom.name FROM admin_mailbox mb INNER JOIN admin_senderaddress sad ON sad.mailbox_id=mb.id INNER JOIN admin_domain dom ON dom.id=mb.domain_id WHERE sad.address='%s'

TL; DR : Esses arquivos de mapa geram uma lista de todos os possíveis endereços de e-mail que o usuário possui no sistema.

Agora para o meu problema : Quando eu tenho um usuário [email protected] registrado no sistema, essas regras garantem que ele será capaz de enviar e-mails de sua principal endereço, bem como todos os aliases registrados, mas não do tipo [email protected] porque esse endereço pertence a um usuário diferente (ou não). Meu problema agora, porém, é que se [email protected] tentar enviar um e-mail de [email protected] (para o qual ele também receberá e-mail devido à recipient_delimiter ) ele receberá um erro:

5.7.1 <[email protected]>: Sender address rejected: not owned by user [email protected].

Isso porque o Postfix irá procurar o nome de login [email protected] usando o smtpd_sender_login_maps e receba uma lista de possíveis aliases (incluindo [email protected] ) em resposta. Ele tentará comparar o endereço do remetente [email protected] com essa lista e descobrirá que não faz parte dessa lista e desistirá.

A minha pergunta é a seguinte: : Existe uma maneira de forçar o postfix a aplicar o recipient_delimiter ao pesquisar / validar endereços de remetentes? Se não, este é possivelmente um bug que deve ser reportado? (Eu estou não tentando reescrever o endereço do remetente, eu só quero que ele seja normalizado durante a validação!)

Obrigado por qualquer ajuda / ponteiros!

    
por ntninja 19.01.2018 / 17:09

0 respostas

Tags