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.

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.