Postfix + Php Mail () VS Postfix + SMTP

3

A maioria dos CMS (Joomla, por exemplo) vem com php mail() como padrão e tem a opção de alterá-lo para SMTP , se quisermos. Estarei configurando o servidor web e o servidor de correio (Postfix) no mesmo VPS no Debian 7. O que estou tentando entender é:

  1. Reputação de entrega: Usar o php mail () vs SMTP faz alguma diferença com a taxa de entrega? Pelo que entendi, o Postfix vai estar usando o protocolo SMTP ao se comunicar com outros servidores na internet ao entregar e-mails, portanto, é seguro assumir que não importa se o e-mail foi enviado para postfix via php mail ou smpt do localhost ? Algum desses dois métodos afeta a reputação do e-mail de alguma forma, mesmo que de uma maneira pequena?

  2. Carga de desempenho: Existe alguma diferença de desempenho entre o e-mail php e o SMTP ao enviar e-mails? Digamos, se eu estou enviando 10.000 e-mails, qual método levaria mais recursos (ou tempo)? Minha suposição é que ambos podem levar um pouco de tempo como: php mail para compilar os emails com cabeçalhos, etc. e SMTP para fazer conexões a cada vez. Qual deles consome a maioria dos recursos do servidor?

  3. Questão de segurança: Quando pesquisei a diferença entre os dois, muitos sites falam sobre o problema de segurança com o php mail, já que um hacker pode enviar um script php para enviar spams. Mas também posso ver outro problema de segurança com o SMTP, já que o nome de usuário e as senhas do SMTP estão armazenados no arquivo de configuração em texto que também não é seguro. Como existem problemas de segurança para os dois métodos, um pesa melhor que o outro em qualquer aspecto?

  4. Preferência: Se eu puder configurar tanto o phpmail quanto o SMTP no meu servidor, devo dar preferência a usar um sobre o outro por algum motivo? Quero dizer, se eu posso usar o SMTP no meu servidor, devo tentar usar o SMTP em vez do phpmail devido a várias razões abordadas nos pontos acima?

Antecedentes: Minha máquina será um servidor web simples que usa postfix apenas para enviar e-mails do Joomla, boletins informativos e e-mail raiz de vários serviços.

    
por Neel 25.10.2014 / 16:18

3 respostas

2

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:)

    
por 04.12.2014 / 14:57
6

Você está certo de que não importará para os outros, mas certamente será importante para você, porque ao enviar SMTP, o Postfix pode se recusar a aceitar sua mensagem por motivos além do seu controle. O que significa que você terá que usar suas próprias filas de entrega e adicionar outro código inchado. Na verdade, você estará fazendo o trabalho do Postfix.

Alguns podem dizer que mail() também pode falhar, mas é por si só tão simples quanto escrever sua mensagem em um arquivo. Em outras palavras, não há muito a quebrar.

Linha de fundo: a menos que seja absolutamente necessário usar o SMTP, use o programa de envio do sistema.

    
por 25.10.2014 / 17:21
2

Em muitos casos, os scripts de spam são carregados por um processo automatizado depois que um mecanismo de varredura automatizado encontra uma vulnerabilidade em seu aplicativo da web. Esses scripts de spam quase sempre usam a função php mail() e não o SMTP. Se alguém invadir seu servidor e pegar senhas smtp do arquivo de configuração, você perderá o castelo mesmo assim. Mas em muitos ataques automatizados em CMSs desatualizados, etc., os scripts de spam usam apenas mail() . Portanto, sugiro que você desative mail() no seu postfix e use exclusivamente o SMTP autenticado.

    
por 02.12.2014 / 21:39