Faça o Postfix usar o MySQL para verificar se o endereço do remetente é permitido

2

Estamos tentando usar o PostFix para verificar se o endereço de e-mail do remetente pode ser enviado para um endereço de e-mail específico.

Outra maneira de descrever isso é que eu quero endereços de e-mail específicos para permitir somente mensagens de entrada (não logins de SMTP) de endereços de e-mail específicos.

Será que algo assim funciona? main.cf:

smtpd_recipient_restrictions =
    [other restrictions here]
    check_sender_access
        mysql:/etc/postfix/restricted_senders_to_recipents.cf

restricted_senders_to_recipents.cf:

user = uname
password = pword
hosts = 127.0.0.1
dbname = dbname
#!!!PSEUDOCODE!!!
query = SELECT allowed FROM members WHERE sender = %sender AND recipent = %recipent;

Isso é possível? Se então como?

Eu sei que aliases com o MySQL funcionam dessa maneira, já que já estamos usando. ( link )

    
por emilhem 01.05.2014 / 23:38

2 respostas

1

A resposta curta é PROBABLY NO.

O Postfix suporta a restrição por remetente / destinatário / cliente com Postfix por-cliente / usuário / etc. Controle de acesso com smtpd_restriction_classes . Com sua necessidade, você deve definir dinamicamente o parâmetro smtpd_restriction_classes , mas isso não funciona com o postfix.

Como solução alternativa, você pode usar o Milter (consulte a documentação ) ou algo parecido com Postfwd ou PolicyD

    
por 06.05.2014 / 09:19
0

Parece que você pode conseguir isso em um processo de duas partes.

Primeiro, crie um smtpd_sender_restriction que é uma pesquisa do mysql para endereços que bleongam para a classe de usuários que precisam do acl:

smtpd_recipient_restrictions = reject_non_fqdn_sender,
    ...
    mysql:/etc/postfix/protected_users.cf

Em seguida, como essa consulta mysql retornará uma classe de usuários, você pode designar essa classe de usuários para fazer uma pesquisa de ano, a fim de decidir se o email pode ser enviado:

smtpd_recipient_restrictions = reject_non_fqdn_sender,
    ...
    proxy:mysql:/etc/postfix/protected_users.cf

whitelist = proxy do check_sender_access: mysql: /etc/postfix/whitelist.cf, rejeitar

Esta pesquisa de duas partes deve fazer o que você precisa.

Referência

    
por 23.11.2016 / 04:45