A resposta para minha própria pergunta é criar um shell wrapper ao redor do sendmail binário para fazer todas as verificações necessárias e usar este wrapper na configuração do PHP-FPM ao invés do binário do sendmail.
AFAIK não há outra solução.
Eu tenho um servidor Linux com contas locais (elas são usadas por processos PHP-FPM) que estão usando o binário sendmail do Postfix para enviar e-mails.
Todos os e-mails são enviados através do Postfix local para um mailhub central que considera os e-mails do servidor de hospedagem como confiáveis, até certo ponto (eles são mais confiáveis do que os e-mails da Internet).
O problema é que qualquer usuário local pode enviar e-mail como qualquer remetente (parâmetro -f
do binário do sendmail ou Return-Path).
Eu gostaria de limitar os remetentes permitidos por um usuário - ou seja, definir qual usuário pode enviar e-mails como o domínio do remetente / remetente. Quando um usuário envia um e-mail como remetente errado, o e-mail deve ser descartado.
Não encontrei nenhuma solução para mapear o UID ou o nome de usuário local ao remetente.
A única solução que encontrei é usar um SMTP, para criar uma conta e senha do Postfix para cada usuário local e, em seguida, usar a diretiva como reject_sender_login_mismatch
in smtpd_sender_restrictions
. Isso é mais difícil de configurar e manter e não está aproveitando o fato de os usuários já estarem autenticados pelo sistema e eu gostaria de evitar isso.
A resposta para minha própria pergunta é criar um shell wrapper ao redor do sendmail binário para fazer todas as verificações necessárias e usar este wrapper na configuração do PHP-FPM ao invés do binário do sendmail.
AFAIK não há outra solução.
Tags postfix