Exim oparty o GMail jako domyślny serwer SMTP
Wysyłanie maili jest jedną z podstawowych funkcjonalności wszelakiej maści aplikacji, pisanych w różnych językach. W przypadku PHP również. Oczywiście kodopisanie zazwyczaj odbywa się nie na serwerze, na którym domyślnie aplikacja będzie się znajdować, a na komputerze programisty. Stawiamy Linuksa, Apacze z PHP, i jazda. A co z mailem?
Oczywiście można pokusić się o postawienie całego serwera poczty, ale pytanie - po co? Bo chcemy przetestować wydajność naszego leciwego laptopa?
Najprostszym rozwiązaniem jest oczywiście postawienie jakiegoś lekkiego demona smtp, który będzie wykorzystywał zewnętrzne konto pocztowe. Takową hybrydą jest połączenie lekkiego Exima z GMailem.
Instalujemy demona poleceniem:
1
apt-get install exim4-daemon-light
Następnie przechodzimy do konfiguracji:
1
dpkg-reconfigure exim4-config
Pokrótce poszczególne opcje konfiguracyjne:
- poczta wysyłana przez pośrednika: otrzymywana przez SMTP lub fetchmail
- Nazwa pocztowa systemu: domain.com
- Adresy IP, na których nasłuchiwać nadchodzących połączeń: zostawiamy bez zmian
- Inne systemy docelowe dla których poczta jest przyjmowana: puste
- Komputery dla których przekazywać pocztę: puste
- Adres IP lub nazwa pośrednika przyjmującego wychodzącą pocztę: smtp.gmail.com::587
- Ukrywać lokalną nazwę w wychodzącej poczcie? Nie
- Utrzymywać ilość zapytań DNS na minimalnym poziomie (dzwonienie na żądanie)? Nie
- Format dostarczania poczty lokalnie: format mbox w /var/mail/
- Podzielić konfigurację na małe pliki? Nie
- Odbiorca poczty dla kont root i postmaster: puste
Następnie edytujemy plik szablonu Exima:
1
gedit /etc/exim4/exim4.conf.template
znajdujemy linię z tekstem
1
.ifdef DCconfig_smarthost DCconfig_satellite
a następnie dodajemy w tej sekcji:
1
2
3
4
5
send_via_gmail:
driver = manualroute
domains = ! +local_domains
transport = gmail_smtp
route_list = * smtp.gmail.com
znajdujemy linię z tekstem
1
begin authenticators
a następnie dodajemy w tej sekcji:
1
2
3
4
gmail_login:
driver = plaintext
public_name = LOGIN
client_send = : nazwaTwojegoKonta@gmail.com : TwojeGMailoweHasło
znajdujemy linię z tekstem
1
transport/30_exim4-config_remote_smtp_smarthost
a następnie dodajemy w tej sekcji:
1
2
3
4
5
gmail_smtp:
driver = smtp
port = 587
hosts_require_auth = $host_address
hosts_require_tls = $host_address
Aby autentykacja przeszła prawidłowo, edytujemy plik
1
/etc/exim4/passwd.client
dodając tekst:
1
2
3
Gmail-smtp.l.google.com:nazwaTwojegoKonta@gmail.com:tw0j3H4sU0
*.google.com:nazwaTwojegoKonta@gmail.com:tw0j3H4sU0
smtp.gmail.com:nazwaTwojegoKonta@gmail.com:tw0j3H4sU0
Teraz aktualizujemy konfigurację Exima:
1
update-exim4.conf
oraz restarujemy sam demon:
1
/etc/init.d/exim4 restart
Czasami zdarza się sytuacja, że maila nie wychodzą, a logu Exima można znaleźć takie rekordy:
1
R=send_via_gmail T=gmail_smtp defer (-53): retry time not reached for any host
Aby rozwiązać ten problem, należy zalogować się na używane konto przez przeglądarkę, a następnie wydać polecenie
1
exim -qff
Wszystkie skolejkowane wiadomości powinny zostać wysłane.