Preciso fazer muitos testes de e-mail local (no macOS 10.14), então uso um servidor SMTP falso na porta 2500 para a maioria das coisas, no entanto, também preciso interceptar mensagens enviadas diretamente por meio de um sendmail
binário local, e isso realmente significa usar um servidor de correio real que pode retransmiti-los para o meu servidor de correio falso. Estou tentando usar o postfix para isso, mas realmente não está indo bem. Meu objetivo é fazer com que ele transmita todas as mensagens para todos os usuários em todos os domínios, sem filtragem, criptografia ou autenticação. Não quero que ele preste atenção às contas de usuários locais, e isso parece exigir a desativação do agente de entrega local do postfix, e não encontrei como fazer isso.
Minha configuração se resume principalmente a isso:
local_transport = local:$myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps =
relayhost = localhost:2500
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/local_passwd
smtp_use_tls = no
smtp_tls_security_level = none
compatibility_level = 2
fallback_transport = localhost:2500
Meu servidor de e-mail falso requer autenticação, embora não verifique nada e qualquer nome de usuário ou senha funcione, então há uma entrada fictícia nesse local_passwd
arquivo.
Ver logs no macOS é extremamente doloroso; a melhor abordagem que encontrei até agora é:
sudo log stream --predicate '(process == "cleanup") || (process == "pickup") || (process == "qmgr") || (process == "error")' --info
Quando eu envio mensagens diretamente para ele usando o sendmail, posso ver que ele aceita mensagens para contas locais, mas não as retransmite. Ele também rejeita mensagens enviadas para contas inexistentes, como [email protected]
essa que eu quero aceitar e retransmitir.
As mensagens acabam em uma caixa de correio em algum lugar que eu possa acessar se eu executar mail
.
O que eu perdi?
Desisti de tentar usar o postfix para isso e encontrei msmtp , que é muito mais simples e está disponível em homebrew.
Eu criei um arquivo de configuração para ele contendo:
A mudança
sendmail_path
no meu php.ini:Isso funciona muito bem para fornecer uma ponte entre a
mail()
função do PHP e o aplicativo de teste SMTP local HELO .