Servidor SMTP de saída leve


46

O que você usa como um SMTP leve apenas para e-mails enviados?

Estou executando um aplicativo que envia e-mails via SMTP quando ocorrem eventos de vez em quando e não preciso de um servidor de e-mail completo.

EDIT: Estou mais do que feliz em usar algo como postfix (e faça), se essa é a melhor escolha. Eu estava pensando que pode haver algo muito mais simples, que corre fora da caixa.


Eu acho que é perfeitamente razoável ficar com algo como exim e postfix. Eles não são difíceis de configurar se você estiver fazendo coisas simples.
Faheem Mitha

Qual é a sua definição de "leve"? Quão grande você espera que as mensagens sejam? Quantas vezes é "de vez em quando"?
Mike B

Respostas:


22

Existem várias opções de agentes de transferência de e-mail mínimos (MTAs) ou "servidores de e-mail"), alguns dos quais foram mencionados em outras respostas:

Para que qualquer um desses funcione, você precisa de um MTA completo em algum lugar que retransmitir suas mensagens (conhecido como "hub de email") e é altamente recomendável que você controle esse hub de email. Bad Things ™ pode acontecer de outra maneira.


O esmtp não está mais sendo mantido.
Nikola Kotur

1
O nullmailer tem um sério problema de conformidade com SMTP: ele tenta infinitamente quando recebe um erro permanente de SMTP. Isso pode custar-lhe dinheiro real se você pagar pela largura de banda / bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
telent

@telent: você não deve usar o nullmailer nesse cenário.

Obrigado! O guia de configuração em troubleshooters.com/linux/nullmailer observa um problema de segurança com o nullmailer: ele expõe senhas na linha de comando ou, pelo menos, costumava fazer isso. Outras conversas observam que o mstmp deixa um pouco menos claro como enfileirar o correio do que o nullmailer.
nealmcb 12/06

11

IMHO, a maneira mais fácil de fazer isso é com o postfix. Você pode configurá-lo como um relé de saída de luz com estes comandos:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Desde que o servidor SMTP especificado em relayhostnão exija autenticação, permita a retransmissão ou seja um destino válido para o endereço do destinatário, isso funcionará.

O myoriginparâmetro será o nome de domínio padrão. Portanto, se você enviar um email para foo, ele será enviado para foo@my.domainname.com. O email enviado pela barra do usuário será de bar@my.domainname.com.

Se você precisar se autenticar e desejar dar suporte ao TLS, execute também os seguintes comandos:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Então, /etc/postfix/sasl_password_mapstenha este conteúdo:

/./ username:password

Todo o correio será enviado para o seu host de retransmissão com o nome de usuário e a senha especificados.


Tentei essas configurações e recebo um erro: "erro: tipo de dicionário não suportado: pcre"
valentt 6/11/2015

1
Instale o pcre e / ou postfix-pcre e tente novamente.
bahamat

Eu descobri, também nesse meio tempo, faltavam dois pacotes, o primeiro é o postfix-pcre, como você disse, mas o outro era estranho - libsasl2-modules. Estou intrigado como libsasl2 e libsasl2-modules-db foram instalados, mas faltava libsasl2-modules ... Agora, finalmente, tudo funciona. Você pode adicionar esta informação crucial à sua resposta?
valentt

1
Para tls, eu também usei: relayhost=other.mailserver.com:465then smtp_tls_wrappermode=yese smtp_tls_security_level=encryptmas está tentando usar o usuário local como o auth. Eu tenho que reescrever o usuário auth de alguma forma.
tu restabelece Monica-dor duh 29/06

"Desde que o servidor SMTP especificado em relayhost não exija autenticação" -> ok, mas raramente é o caso hoje em dia. Sua sugestão está correta, mas principalmente irrelevante!
FarO 12/06

9

Supondo que você precise de um programa que possa ser executado no shell como o sendmail (8), talvez o MSMTP atenda às suas necessidades? Ele pode se conectar a um servidor SMTP remoto e enviar e-mails como stdin, assim como o sendmail.


Eu uso o MSMTP para isso, funciona muito bem e a configuração é muito simples.
dsp

Estou tão feliz que você recomendou isso. Eu tenho procurado algo assim por um bom tempo agora. A configuração do sendmail é muito diferenciada para minhas necessidades.
Ixtmixilix

4

O ESMTP é um servidor de transferência de email somente para retransmissão que pode funcionar para seu aplicativo.


1
projeto parece morto a partir de 2009
SHernandez

2

Você pode achar o sSMTP adequado para suas necessidades. Leia este artigo sobre ele e suas limitações.

Honestamente, porém, eu não ficaria muito estressado com a instalação do postfix ou exim, mesmo que seja apenas para enviar e-mails.


1
+1 para ssmtp, -1 para comentários desnecessários no sendmail, além de recomendar o uso de um mta completo, o que é muito mais difícil de fazer corretamente. servidores de correio mal configurados e mantidos tornam a vida de nós administradores de correio um inferno.

@hop: Não concordo em ambos os casos. O sendmail é horrível. Além disso, o exim, por exemplo, é o padrão do Debian e é perfeitamente simples de usar. Provavelmente é o postfix, mas nunca o usei.
Faheem Mitha


1

Tecnicamente, você não precisa de um servidor de email no host, o que você precisa (e provavelmente já possui) é um cliente smtp (ou MUA) que pode se conectar ao servidor SMTP corporativo (que pode estar em qualquer lugar ao qual você possa se conectar). .)

Dependendo do aplicativo (e da linguagem de programação em que foi escrito), existem muitas maneiras diferentes de conectar seu aplicativo ao servidor SMTP 'the' na sua rede.

Geralmente, com PHP ou Python, há um arquivo de configuração com o aplicativo para especificar o servidor "SMTP" (que pode estar no seu host ou em outro lugar na sua rede.) Se você já possui um servidor de correio na rede, basta apontar o configuração para esse servidor.

Se não houver outras opções, o aplicativo poderá gerar a mensagem de email na saída padrão que você pode processar com algo como:

listoftargets = "me@exemplo.com jab@exemplo.com" echo "Conteúdo do teste" | mail -s "Assunto do teste" $ listoftargets

Em alguns sistemas, já existe um servidor de correio mínimo para envio somente.

Sam T.


Eu tenho vários servidores na nuvem e realmente queria que cada um deles tivesse seus próprios servidores SMTP de saída, em vez de confiar em algo externo. Dessa forma, se meu servidor SMTP remoto estiver inativo, isso não afetará todos os servidores.
FlappySocks

1) se você deixar PHP ou Python fazer a parte smtp, terá que fazer todo o trabalho (enfileiramento, manipulação de erros) que um MTA trataria. 2) no final, você contradiz o que diz no início

Alguns aplicativos Linux são configurados para esperar mailou sendmailnomear executáveis. Notificações do sistema. Esse é o ponto, não é? Para qualquer outra coisa, não há restrições.
Craig Hicks
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.