Envio de e-mail com ssmtp
Enviando e-mail de máquina unix usando o ssmtp.
No ubuntu instale com o apt-get
:
# apt-get install ssmtp
Depois basta configurar para usar o Amazon SES no arquivo /etc/ssmtp/ssmtp.conf
:
root=username@mydomain.com
mailhub=email-smtp.us-east-1.amazonaws.com:465
hostname=myserver.mydomain.com
FromLineOverride=YES
AuthUser=AAAAABBBBBCCCCCDDDDD
AuthPass=AAAAABBBBBCCCCCDDDDDEEEEEFFFFFGGGGGHHHHHIIII
UseTLS=YES
AuthMethod=LOGIN
Se for usando o Gmail1:
root=username@gmail.com
mailhub=smtp.gmail.com:587
hostname=myserver.mydomain.com
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=username@gmail.com
AuthPass=MyPassword
Depois de fazer a configuração tem ainda que deixar as permissões corretas:
# chmod 640 /etc/ssmtp/ssmtp.conf
# chown root:mail /etc/ssmtp/ssmtp.conf
Se quiser que algum usuário envie e-mail, basta adicioná-lo ao grupo mail
, editando diretamente o /etc/group
ou:
# gpasswd -a username mail
Enviando e-mail
Para testar (caso seu usuário não seja do grupo mail
use o sudo
antes do ssmtp
):
# echo "Testing" | /usr/sbin/ssmtp username@gmail.com
Ou se quiser use um arquivo, por exemplo:
From: username@mydomain.com
Subject: This is Sparta!
Hi.
E chamando via linha de comando:
# ssmtp username@mydomain.com < /tmp/mail.txt
Rails
Para configurar no Rails basta usar algum arquivo de configuração no initializers semelhante a:
Rails.application.configure do
config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = { :arguments => '-i' }
config.action_mailer.default_url_options = { :host => "mydomain.com" }
end
Ou então colocar em config/environments/production.rb
.
Exemplo de scripting
O script abaixo eu coloquei num servidor para me enviar um e-mail com as atualizações que são necessárias, no meu caso coloquei uma vez por dia no crontab:
#!/bin/bash
apt-get update >/dev/null 2>/dev/null
count=$(/usr/lib/update-notifier/apt-check --human-readable | grep -v ^0 | wc -l)
if [ $count -ne 0 ]
then
file=/tmp/updates-notify-$$
echo -e "To: username@mydomain.com
From: $(hostname)@mydomain.com
Subject: $(hostname -f) has updates
The server $(hostname -f) has updates:
$(/usr/lib/update-notifier/apt-check --human-readable)
$(apt-get -s -o Debug::NoLocking=true upgrade | grep 'Inst' | cut -d' ' -f2)
" >> $file
ssmtp username@mydomain.com < $file
rm $file
fi
1 Cuidado que o gmail tem um problema de autenticação, caso toda sua configuração esteja certa e mesmo assim receba erro de autenticação, visite: http://www.google.com/accounts/DisplayUnlockCaptcha ou https://www.google.com/a/yourdomain.com/UnlockCaptcha para autorizar o envio de e-mail pelo seu servidor.