O Postfix MTA consiste em vários componentes / serviços que trabalham juntos para executar as diferentes etapas de entrega e recebimento de correspondência; estes incluem o daemon smtp, os processos de pickup e limpeza, o gerenciador de filas, o serviço smtp, pipe / spawn / virtual / rewrite ... e outros (incluindo a possibilidade de componentes customizados).
O postfix também fornece vários tipos de ganchos que permitem a integração com software externo, como servidores de política, filtros, manipuladores de retorno, registradores e mecanismos de autenticação; esses ganchos podem ser conectados a diferentes componentes / etapas do processo de entrega e podem se comunicar via (pelo menos) IPC, rede, banco de dados, vários tipos de arquivos simples ou um protocolo predefinido (por exemplo, milter).
Um exemplo antigo e muito limitado disso é mostrado na página .
Minha pergunta:
Alguém tem acesso a um recurso que descreve esses ganchos, os componentes / estágios de entrega com os quais o gancho pode interagir e os métodos de comunicação suportados? Ou, mais provavelmente, a documentação dos vários componentes do Postfix e os ganchos / métodos que eles suportam?
Por exemplo:
Dado o requisito " se o servidor MX primário do destinatário corresponder a 'shadysmtpd', verifique o endereço do destinatário em uma lista; se houver uma correspondência, encerre a conexão SMTP sem aviso prévio ".
Meu software precisaria 1) integrar-se à parte adequada do processo SMTP, 2) usar algum método para executar a verificação de endereço (servidor de mapa TCP? expressões regulares? mysql?) e 3) implementar a ação necessária ( terminação da conexão).
Além disso, provavelmente haverá vários métodos para fazer isso, e outro requisito seria encontrar o que melhor se encaixa (ex: um servidor de rede pode ser mais rápido que uma pesquisa de arquivo simples; ou, se um grande volume de mensagens pode ser afetado por essa verificação, ela deve ser executada o mais cedo possível no processo de correspondência).
Exemplo do mundo real:
O servidor de políticas apolicy (executa verificações nos endereços de acordo com as regras definidas pelo usuário) é projetado como um servidor TCP independente que conecta o Postfix ao componente smtpd
por meio da diretiva ' check_policy_service inet:127.0.0.1:10001
'no' smtpd_client_restrictions
'opção de configuração.
Isso significa que, quando o Postfix primeiro recebe um item de e-mail a ser entregue, ele criará uma conexão TCP com o endereço do servidor de política: port para determinar se o cliente tem permissão para enviar e-mails desse servidor (em além de quaisquer outros métodos de restrição / pesquisa de restrição são definidos nessa opção); a ação apropriada será tomada com base na resposta do servidor.
Notas:
1) A página da arquitetura Postfix descreve algumas dessas informações na arte ascii; o que eu espero é um material de referência destilado, condensado.
2) Por favor, corrija-me se estiver errado em qualquer nível; há uma montanha de material e eu sou apenas um homem;)
Obrigado!