sendmail + ssmtp + Google Apps
Odkąd pamiętam, używając jakiejkolwiek dystrybucji Linuksa denerwowało mnie „niedostarczanie” wiadomości przez /usr/sbin/sendmail. Wszystko lądowało w pliku ~/dead.letter . Nie chciałem uruchamiać lokalnego serwera SMTP z prawdziwego zdarzenia, gdyż dla jednej osoby pracującej przy komputerze jest to przerost formy nad treścią.
Przeglądając portage znalazłem ciekawą paczkę:
mail-mta/ssmtp
Available versions: 2.61-r2 [M]~2.61-r30 [M]~2.61-r31
Homepage:
Description: Extremely simple MTA to get mail off the system to a Mailhub
Czyli krótko mówiąc, jest to agent który wysyła wszelką pocztę przez zewnętrzny serwer SMTP. Było to proste rozwiązanie, które gotów byłem zaakceptować. Jako okno na świat wykorzystałem serwery Google.
Na początek należy zemergować niezbędne pakiety. ssmtp proponuję skompilować ze wsparciem SSL i IPv6 – myśląc długofalowo ;-).
Mamy trzy możliwości do wyboru:
- dodać do pliku
/etc/make.confdeklarację:
USE="ssl ipv6" - dopisać te flagi do
/etc/portage/package.use, czyli:
# echo "mail-mta/ssmtp ssl ipv6" >> /etc/portage/package.use - zadeklarować je przed samym uruchomieniem emerge:
# USE="ssl ipv6" emerge -va mail-mta/ssmtp
Proces kompilacji jest krótki. Przystąpmy więc do konfiguracji. Wszystko znajdziemy w jednym pliku – /etc/ssmtp/ssmtp.conf.
mailhub=smtp.gmail.com:587 hostname=gierwialo.com root=xxx@gierwialo.com AuthUser=xxx@gierwialo.com AuthPass=yyy UseSTARTTLS=Yes UseTLS=Yes
Chyba nie ma potrzeby tłumaczenia poszczególnych linijek. Należy tylko podkreślić, że w przypadku używania serwerów Google, ważne jest podanie prawidłowego portu (:587), oraz ustawienia dwóch opcji: UseSTARTTLS=Yes i UseTLS=Yes bez których nie nawiążemy poprawnie połaczenia.
Całość można przetestować programem /bin/mail z opcją -v dzięki temu szczegółowe informacje dotyczące wysyłki, będą wyświetlane na konsoli.
Przykład:
# /bin/mail -v xxx@epecet.com Subject: testowy mail treść / Ctrl + D / Cc: [<-] 220 mx.google.com ESMTP y6sm38445963mug [->] EHLO gierwialo.com [<-] 250 ENHANCEDSTATUSCODES [->] STARTTLS [<-] 220 2.0.0 Ready to start TLS [->] EHLO gierwialo.com [<-] 250 ENHANCEDSTATUSCODES [->] AUTH LOGIN cG9tb2NuaWtAZ2llcndpYWxvLmNvbQ== [<-] 334 UGFzc3dvcmQ6 [->] NVI5OTQx [<-] 235 2.7.0 Accepted [->] MAIL FROM:<root@gierwialo.com> [<-] 250 2.1.0 OK [->] RCPT TO:<xxx@epecet.com> [<-] 250 2.1.5 OK [->] DATA [<-] 354 Go ahead [->] Received: by gierwialo.com (sSMTP sendmail emulation); [->] From: "root" <root@gierwialo.com> [->] Date: Sat, 30 Jun 2007 15:26:04 +0200 [->] To: xxx@epecet.com [->] Subject: testowy mail [->] [->] treść [->] . [<-] 250 2.0.0 OK 1183209960 y6sm38445963mug [->] QUIT [<-]
Tak wygląda prawidłowy przebieg komunikacji z serwerem ;-) Jeżeli coś się nie uda, nasz email trafi do ~/dead.letter.
Jak wszystko działa, możemy wypić herbatkę ;-)
Wysłany: 30 czerwca 2007 o 15:37:33
r. gierwiało - szerzej być może znany jako radziel. Programista - samouk, zwolennik ruchu open-source
Trudno mi teraz sobie przypomnieć, dlaczego zdecydowałem się używać esmtp zamiast ssmtp… ale w każdym razie był powód i dlatego polecam to pierwsze ( ;. Może ssmtp nie obsługuje konfiguracji per-user?
Jeśli korzystasz z procmaila lokalnie może Cię zainteresować localsendmail: http://overlays.gentoo.org/dev/nelchael/browser/mail-mta/localsendmail
Działa pięknie, dzięki!