Referência de fluxo / gancho do postfix ou visão geral de alto nível?

3

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!

    
por mikewaters 17.08.2010 / 04:07

1 resposta

1

Uma imagem muito antiga do fluxo está aqui: link

link Você está procurando a documentação em Controle de retransmissão / acesso SMTP e Inspeção de conteúdo (todos esses documentos).

Terei todo o gosto em oferecer conselhos específicos, mas a documentação é um bom resumo.

Para a consulta de exemplo que você forneceu acima, você implementaria um servidor de políticas personalizado. Consulte o link para obter exemplos.

    
por 30.01.2011 / 13:08

Tags