Existem duas maneiras de enviar e-mails através de um servidor SMTP local:
- conectar-se e autenticar-se na porta de submissão, como 587 com STARTTLS ou 465 com TLS implícito/imediato => solicitação de rede, verificações e restrições aplicadas via
smtpd - usar
sendmailou similar, que invoca o comando localpickup(no caso do Postfix), sem fazer nenhuma conexão de rede e contornando todas as verificações e restrições configuradas para o serviço de submissãosmtpd.
O último é mais simples e rápido, implementado em sistemas e frameworks de tempo de execução comuns, como PHP mailer e esta biblioteca de e-mail Ruby usada pelo Discourse. E a autenticação é contornada, nenhuma credencial em texto simples precisa ser armazenada em qualquer lugar. Ou, em outras palavras: o servidor SMTP não é usado em nenhum caso, mas apenas o cliente SMTP.
Quero dizer, sim, a conexão com a porta de submissão não deve ter impacto significativo na carga do servidor, em comparação com o que o Discourse faz de outra forma. O último ponto pode ser resolvido com, por exemplo, a regra smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject na porta de submissão, para permitir submissões de IPs de loopback (padrão, configuração mynetworks) antes de fazer qualquer autenticação. Se a solicitação do contêiner for vista com outro IP, ela pode ser adicionada a mynetworks. Acho que foi assim que funcionou no caso do tópico que linkei antes.
Veremos na próxima vez que atualizarmos/reconstruirmos nosso Discourse, quando as configurações SMTP alteradas forem aplicadas. Relatarei como funciona.
Mas ainda seria interessante saber se existem outras maneiras e o que essa configuração “Método de entrega” significa.
O Postfix é executado no host, não dentro de um contêiner, mas não faria muita diferença, pois permanece uma autenticação baseada em rede.
Sim, um pensamento posterior, faz sentido que sendmail etc. do host/outro contêiner não possam funcionar dentro de um contêiner, pois requerem acesso direto a vastas partes dos executáveis, bibliotecas e configurações do Postfix, suponho. A menos que haja uma espécie de socket mágico que possa ser montado no contêiner ou algo assim
.