sSMTP, esmtp - proste MTA

Sun 06 December 2009 by admin

Powiadamianie o incydentach w administrowanym przez nas systemie odbywa sie często za pośrednictwem poczty elektronicznej. Instalowanie w tym celu serwerów pocztowych (np.exim,postfix,sendmail) odpowiedzialnych tylko za wysyłanie poczty wydaje sie mijać z celem bo poczta wysyłana jest sporadycznie, a konfiguracja ww. daemonów może wydać się niełatwa. Z pomocą przychodzą dwa proste MTA sSMTP oraz esmtp. Możliwości oraz konfigurację obu z nich przedstawia poniższy wpis.

Na pierwszy ogień idzie sSMTP, s od simple czyli spełnione mamy założenie o łatwości konfiguracji ;) Instalacja nie powinna nastręczać problemów zarówno instalacja ,,kompilowana'' jak i ta z paczek. Po zainstalowaniu mamy do dyspozycji dwa pliki konfiguracyjne, pierwszy z nich ssmtp.conf (domyślnie w /etc/ssmtp lub /usr/local/etc/ssmtp) jest to główny plik konfiguracyjny, przykładowa konfiguracja będzie dotyczyć konta pocztowego gmail przez niego to nasza poczta będzie wychodzić na świat:

# domyślnie poczta trafia na konto root'a w systemie
# automatycznie zostanie wysłana na podaną skrzynkę pocztową username@gma..
root=username@gmail.com
# adres ,,bramki'' pocztowej
mailhub=smtp.gmail.com:587
# poczta będzie pochodzić z domeny gmail.com
rewriteDomain=gmail.com
# szyfrowanie sesji
UseSTARTTLS=YES
# nazwa użytkownika i hasło do uwierzytelnienia się na serwerach gmail
AuthUser=username
AuthPass=password
# YES: użytkownicy mogą zdefiniować pole nagłówka From:
# NO: system wygeneruje nagłówek From:
FromLineOverride=NO

zaś plik konfiguracyjny revaliases, zawiera reguły wypełnienia pola nagłówka From:

foo:username@gmail.com:smtp.gmail.com:587

i tak użytkownik foo wysyłający pocztę przez mailhub smtp.gmail.com:587 będzie widoczny pod adresem username@gmail.com.

Programy sSMTP emuluje zachowanie sendmail'a, może być w pełni zastąpiony i tak:

# ln -s /usr/local/sbin/ssmtp /usr/sbin/sendmail

wówczas do wysłania mejla:

echo "tresc" | mail -s "Temat" admin@serwer.foo

zostanie użyty ssmtp. sSMTP wspiera różne metody autoryzacji AuthMethod w tym cram-md5, standardowo używa metody plain, autoryzacja może odbywać się również za pomocą certyfikatów TLS (UseTLS, TLSCert). Więcej informacji na temat ww. przedstawionych metod: man ssmtp.conf.

Drugi na ogień idzie esmtp, podobnie jak sSMTP zastępuje sendmail'a, oferuję jednak możliwość indywidualnej konfiguracji poczty dla każdego użytkownika, obsługę wielu kont oraz do dostarczenia poczty lokalnej oferuje ,,wtyczki'' do MDA (np. procmail'a). Konfiguracja zawarta jest w pliku esmtprc (globalna) bądź .esmtprc (lokalna) przedstawia się następująco:

# adres smtp
hostname = smtp.gmail.com:587
# nazwa użytkownika
username = "username"
# hasło
password = "password"
# obowiązkowe szyfrowanie
starttls = required
# polecenie wykonywane tuż przed połączeniem z serwerm SMTP
#preconnect = "ssh -f -L 2025:mail.isp.com:25 user@shell.isp.com 'sleep 5'"
# dodatkowo konto wybierane przełącznikiem -f
#
identity username2@gmail.com
hostname smtp.gmail.com:587
username "username2@gmail.com"
password "password2"
starttls required
# określenie MDA
mda = "/usr/local/bin/procmail -d %T"

esmtp korzysta z biblioteki libESMTP, w przypadku połączenia TLS wymagane jest dostarczenie certyfikatu CA. Dla gmail'a można pobrać zestaw wszystkich certyfikatów CA (używanych m.in. przez Mozilla Firefox'a) w tym celu należy:

# fetch http://curl.haxx.se/ca/cacert.pem
# mkdir ~/.authenticate && chmod 700 ~/.authenticate
# mv cacert.pem ~/.authenticate/ca.pem && chmod 600 ~/.authenticate/ca.pem

Poprawność konfiguracji możemy przetestować:

# echo "Test" | mail -v -s "Temat" admin@serwer.foo

Więcej informacji na temat konfiguracji esmtp dostępne pod adresem:

http://esmtp.sourceforge.net/manual.html

Za pośrednictwem dwóch prostych programów, których konfiguracja sprowadza się niemal do konfiguracji programu pocztowego w sekcji serwer SMTP, możemy zaoferować naszym skryptom kontakt ze światem zewnętrznym ;).

http://esmtp.sourceforge.net/manual.html


Comments