Delivery Reputation: Would using php mail() vs SMTP make any difference with the delivery rate? From what I understand, Postfix is going to be using SMTP protocol when communicating with other servers on the internet when delivering emails, so therefore is it safe to assume that it doesnt matter if the email was sent to postfix via php mail or smpt from localhost? Does any of these 2 methods affect the email reputation is any ways even in a small way?
Nenhum relacionado de todos. O postfix pode receber email via mail () e SMTP. Após o processamento, o postfix irá enviar via SMTP.
Performance Load: Is there any performance difference between php mail and SMTP when sending emails? Say, if I am sending like 10,000 emails, which method would take the most resources (or time)? My assumption is that both can take a bit of time like: php mail for compiling the emails with headers, etc.. and SMTP for making connections each time. Which one consumes the most server resources?
Faça um benchmark! Eu não tenho nenhum dado sobre isso.
Aqui, qual processo envolvido em mail () e SMTP?
No comando mail (), invoque o comando sendmail do PHP e o programa coloca seu email em um arquivo no diretório de filas maildrop. O daemon de captura examina esse diretório e move o email para o daemon de limpeza.
No SMTP one, o PHP cria uma conexão com o seu servidor postfix via SMTPd. Depois de terminar o ritual SMTP, o SMTPd fará verificações se os emails são permitidos ou não. Se um email for permitido, ele será transmitido para o daemon de limpeza.
Fonte: documentação oficial do postfix
Security Issue: When I searched for the difference between the two, many sites says about the security issue with php mail since a hacker can upload php script to send out spams. But I can also see another security issue with SMTP as well since the SMTP username and passwords are stored in configuration file in text which is not secure neither. Since there are security issues for both methods, does one weigh better than the other in any aspects?
Como @Tutul disse em outra resposta, você provavelmente espera que algum script de spam use mail () para enviar o spam. Sim, esta é uma das considerações para bloquear o comando mail no php.
No entanto, existe um princípio: uma vez que alguém tenha colocado o script em seu servidor de e-mail, ele pode enviar a habilidade de uso do PHP para enviar e-mail via mail () e SMTP .
No próprio php, não há proteção para limitar quantas conexões SMTP ou mail () podem ser invocadas pelo spammer. Um lugar para colocar a linha de defesa é no MTA (postfix). Infelizmente, você não pode limitar o recebimento de mensagens do comando mail (). No entanto, você pode limitar quantos pedidos de envio podem ser feitos a partir da conexão SMTP. Policyd ou o postfwd podem ajudar a corrigir o problema postfix.
Nota: A explicação acima é sobre o processo de aceleração ao receber email. Claro que você pode acelerá-lo ao enviar e-mail. Por exemplo, você limita 20 e-mails por minuto a @ gmail.com para evitar que o daemon de lista negra do GMAIL bloqueie você. Veja os documentos sobre o Ajuste de desempenho do Postfix
Nota final
IMHO, eu prefiro enviar e-mail via SMTP. Você pode usar o MTA como proteção adicional contra surtos de spam. Você pode ter que lidar com outra fila de mensagens em PHP, como @Sanmain disse em outra resposta embora:)