Konfiguracja OpenWrt do wysyłania mejli
Ostatnia zmiana: 2022-06-16 15:16
Do czego można użyć mejli wysyłanych z rutera z OpenWrt? Można wysyłać powiadomienia np. o zakończeniu pobierania torrentów, statystyki dzienne, informacje o kończącym się miejscu na dysku lub przekroczeniu transferu przez jednego z użytkowników. Zastosowań może być wiele.
Obecnie większość serwerów pocztowych wymaga uwierzytelniania w celu wysłania poczty (wykorzystujemy serwer jako pośrednik, nie wysyłamy mejla bezpośrednio). Przykładowe rozwiązana zaprezentowano dla konta
Google Mail, w innych przypadkach mogą różnić się ustawienia serwera.
Aby można było wysyłać mejle przy pomocy konta Google należy wygenerować hasło przy pomocy
App Passwords.
msmtp
Instalacja
# opkg update
# opkg install msmtp
Jeżeli konto pocztowe nie wymaga używania SSL/TLS można zainstalować pakiet
msmtp-nossl bez zależności libopenssl i zlib. Pozwoli to na znaczne zaoszczędzenie pamięci flash.
Następnie należy wyedytować plik
/etc/msmtprc i podać dane dla określonego konta. Dla gmail konfiguracja wygląda następująco:
account default
host smtp.gmail.com
port 587
auth on
user XXX@gmail.com
password YYY
auto_from off
from XXX@gmail.com
tls on
tls_starttls on
tls_certcheck off
logfile
syslog LOG_MAIL
Zamiast XXX/YYY należy podać nazwę konta i hasło do niego.
Wysyłanie wiadomości
Tworzymy wiadomość w pliku o następującej zawartości:
To: cezary@eko.one.pl
Subject: Wiadomosc testowa
To dziala!
Przed "To" i "Subject" nie może być żadnej spacji i tabulacji, muszą zaczynać się od początku linii.
Wysyłamy mejla poleceniem
# cat plik.txt | msmtp -t
Jeżeli wszystko jest poprawnie na konsoli nie powinien pojawić się żaden komunikat, natomiast w logach (
logread) powinna być dostępna informacja o poprawnym wysłaniu mejla (exitcode=EX_OK)
Jan 1 00:21:08 OpenWrt mail.info msmtp: host=smtp.gmail.com tls=on auth=on user=XXX@gmail.com from=XXX@gmail.com recipients=cezary@eko.one.pl mailsize=91 smtpstatus=250 smtpmsg='250 2.0.0 OK 1247301648 10sm4436033eyz.11' exitcode=EX_OK
Jeżeli jest tam błąd (errormsg) należy w pierwszej kolejności sprawdzić ustawienia konta pocztowego.
ssmtp
sSMTP jest mniejszy objętościowo niż msmtp i także może działać jako przekaźnik poczty.
Instalacja
# opkg update
# opkg install ssmtp
Następnie należy wyedytować plik
/etc/ssmtp/ssmtp.conf i podać dane dla określonego konta. Dla gmail wygląda następująco:
root=XXX@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
UseSTARTTLS=YES
AuthUser=XXX@gmail.com
AuthPass=YYY
FromLineOverride=YES
Zamiast XXX/YYY należy podać nazwę konta i hasło do niego.
Wysyłanie wiadomości
Tworzymy wiadomość w pliku o następującej zawartości:
To: cezary@eko.one.pl
Subject: Wiadomosc testowa
To dziala!
Przed "To" i "Subject" nie może być żadnej spacji i tabulacji, muszą zaczynać się od początku linii.
Wysyłamy mejla poleceniem
# cat plik.txt | sendmail -t
Jeżeli wszystko jest poprawnie na konsoli nie powinien pojawić się żaden komunikat, natomiast w logach (
logread) powinna być dostępna informacja o poprawnym wysłaniu mejla
Jan 1 00:21:09 OpenWrt mail.info sSMTP[2252]: Sent mail for XXX@gmail.com (221 2.0.0 closing connection j3sm21818009wiw.1) uid=0 username=root outbytes=413
Jeżeli pojawi się błąd należy w pierwszej kolejności sprawdzić ustawienia konta pocztowego.
mailsend
Bardzo prosty konsolowy program, o dużych możliwościach. Można go wykorzystać do wysłania mejli tekstowych, w html, dodawać załączniki, dodatkowe nagłówki itp.
Instalacja
# opkg update
# opkg install mailsend
Wysyłanie wiadomości
Program ten ma dwa tryby pracy - interaktywny, w którym w konsoli musimy podać wszystkie dane:
# mailsend
i tu odpowiadamy na pytania
lub zwykły tryb, w którym można wszystko podać jako argumenty wywołania. Przykład dla gmail:
# mailsend -smtp smtp.gmail.com -port 587 -auth -user XXX -pass YYY -starttls -f XXX@gmail.com -name "Konto testowe" -t cezary@eko.one.pl -sub "Wiadomosc testowa" -M "To dziala!"
Message: To dziala!
Mime type: text/plain
Disposition: inline
Encoding type: none
Mail sent successfully
Zamiast XXX/YYY należy podać nazwę konta i hasło do niego. Warto zapoznać się z przykładami wywołania:
# mailsend -h
# mailsend -example
Jeżeli nie używamy serwera pocztowego z szyfrowaniem można zainstalować mniejszą wersję - pakiet
mailsend-nossl.