Prosty MTA z heirloom-mailx i ssmtp

Czasami potrzebny jest nam serwer pocztowy, który przyśle informacje dla root’a (np. monity smartd, mdadm, sypnięte crony itp) ale równocześnie nie chcemy stawiać pełnego serwera typu postfix/exim. Warto w tym celu wykorzystać zestaw heirloom-mailx + ssmtp. hairloom-mailx jest prostym shellowym klientem SMTP – przy okazji linkuje polecenie mail (przydatne w skryptach). ssmtp pełni funkcję serwera SMTP ale nie działa jako demon – proces uruchamia się gdy jest potrzebny i znika po wysłaniu maili. Dodatkowo ssmtp może zostać skonfigurowany by wysyłać maile nie tylko przez relay’a ale również autoryzując się na zewnętrznym serwerze pocztowym, np. gmail’u czy gdziekolwiek indziej.

Instalacja

apt-get install ssmtp heirloom-mailx

Konfiguracja z relay’em

Edytujemy plik /etc/ssmtp/ssmtp.conf – w konfiguracji z relay’em wystarczą te linijki:

root=postmaster@domena.pl
mailhub=domena.pl
hostname=serwerek.domena.pl

Warto zwrócić uwagę że dobrze by było aby domena serwerek.domena.pl istniała i wskazywała na nasz serwer – dzięki temu poczta nie odpadnie na prostych filtrach antyspamowych.

Konfiguracja pod gmail’a

W ssmtp.conf potrzebujemy:

root=postmaster@domena.pl
mailhub=smtp.gmail.com:587
hostname=serwerek.domena.pl
AuthUser=twojekonto@gmail.com
AuthPass=twoje_haslo_do_gmaila
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN

Test

Warto teraz sprawdzić czy poczta wychodzi jak powinna:

echo test | mail -s "testowa wiadomosc" postmaster@domena.pl

Wysyłanie załączników poleceniem mail

Kiedyś potrzebowałem w ramach testu obciążeniowego wysłać dużo wiadomości z załącznikami. Chciałem to zrobić na szybko z shell’a i tutaj chwilę musiałem pogooglać aby znaleźć działające polecenie. To co znalazłem wygląda tak:

(echo "testowa wiadomosc"; uuencode test.zip test.zip) \
| mail -s "Test" testowy@mail.pl

Wiedząc już jak wysyłać maile z załącznikami, mały mail bombing mogłem zrobić tak:

for i in `seq 1 100`; do
   (cat tekst.txt; uuencode test.zip test.zip) \
   | mail -s "Test $i" testowy@mail.pl;
done