Obsługa wysyłania poczty przez usługę Mandrill


#1

Dodajemy do pliku /config/environments/development.rb następujące linijki:
config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = {arguments: ‘-i’}

Rejestrujemy się w usłudze [Mandrill][1]
[1]: https://mandrillapp.com/
następnie, klikamy w Get SMTP Credentials, następnie w + Add API Key, klikamy Edit i następnie wybieramy Only Allow This Key To Use Certain API Calls, wybieramy Send (Lista Messages).

Instalujemy Postfix:
sudo apt-get install postfix
W konfiguracji wybieramy “brak konfiguracji”
sudo mkfifo /var/spool/postfix/public/pickup ps aux | grep mail kill sudo /etc/init.d/postfix restart
Tym poleceniem odblokowujemy postfix.

Następnie za pomocą poleceń konfigurujemy postfix:
sudo nano /etc/postfix/sasl_passwd
W pliku dodajemy linijkę:

[smtp.mandrillapp.com] USERNAME:API_KEY

Za USERNAME wpisujemy swoją nazwę użytkownika ze strony Mandrill, za API_KEY swój API Key z tej samej strony.

Zmieniamy prawa dostępu do pliku na:
sudo chmod 600 /etc/postfix/sasl_passwd

sudo nano /etc/postfix/main.cf
I dodajemy zawartość:

# enable SASL authentication
smtp_sasl_auth_enable = yes
# tell Postfix where the credentials are stored
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd 
smtp_sasl_security_options = noanonymous
# use STARTTLS for encryption
smtp_use_tls = yes 
relayhost = 
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps

Znowu tworzymy plik:
sudo nano /etc/postfix/relayhost_maps
W pliku:

admin@twojadomena.pl       [smtp.mandrillapp.com]

Ostatni etap konfiguracji Postfix:
sudo postmap /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/relayhost_maps

Resetujemy komputer. :smile:
Testujemy czy działa:
sudo sendmail adres@odbiorcy.pl

From: you@yourdomain.com
Subject: Testing from Postfix
This is a test email
.

#2

Nie łatwiej użyć smtp?

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:        'smtp.mandrillapp.com',
  user_name:      '',
  password:       ''
}