K odeslání mailů z terminálu (příkazové řádky) použijeme SMTP klienta msmtp.
Instalace msmtp
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install msmtp msmtp-mta -y
Konfigurace msmtp
Nastavení SMTP klienta se provádí v souboru /etc/msmtprc (případně v souboru ~/.msmtprc). Tento soubor po instalaci neexistuje, tak si ho vytvořte 😉.
sudo vim /etc/msmtprc
Konfigurace pro GMail
Do konfiguračního souboru /etc/msmtprc vyplníme následující nastavení
# Generics
defaults
auth on
tls on
# following is different from ssmtp:
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# user specific log location, otherwise use /var/log/msmtp.log, however,
# this will create an access violation if you are user pi, and have not changes the access rights
logfile ~/.msmtp.log
# Gmail
account gmail
host smtp.gmail.com
port 587
from whoami
user username@gmail.com
password password
# Default
account default : gmail
Pokud máte, jako já, na GMailu dvoufázovou autentizaci, tak heslo není heslo 🙂. Ale je to heslo aplikace vygenerované v rozhraní GMailu na stránce myaccount.google.com/apppasswords.
Konfigurace pro Seznam.cz
# Generics
defaults
auth on
tls on
# following is different from ssmtp:
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# user specific log location, otherwise use /var/log/msmtp.log, however,
# this will create an access violation if you are user pi, and have not changes the access rights
logfile ~/.msmtp.log
# Seznam.cz specifics
account seznam
host smtp.seznam.cz
port 25
from whoami
user username@seznam.cz
password password
# Default
account default : seznam
Všechno funguje i pro Mojí doménu u seznam.cz
Odeslání e-mailu
E-mail z terminálu pošleme příkazem
echo 'testovací zpráva' | msmtp destination-email@domain.com
Tato testovací zpráva ale nejspíš skončí ve spamovém koši. Tak si buď doplňte další parametry jako třeba předmět, nebo udělejte pravidlo 😉
Pokud si chcete vybrat účet, ze kterého bude e-mail odeslán, tak použijte přepínač -a
echo 'testovací zpráva' | msmtp destination-email@domain.com -a gmail
printf 'To: destination-email@domain.com\nFrom: source-email@domain.com\nSubject: TEST\n\nPokusny email' | msmtp destination-email@domain.com
E-mail s přílohou
Pokud budeme chtít poslat e-mail s přílohou tak je nutné doinstalovat aplikace mutt
sudo apt-get install mutt -y
V domovském adresáři si vytvoříme konfigurační soubor .muttrc
vim ~/.muttrc
a do něho vyplníme konfiguraci
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Jméno"
set from=source-email@domain.com
set envelope_from=yes
Pak už můžeme jednoduše odesílat zprávy pomocí příkazu
echo "text zprávy" | mutt -a soubor.txt -s "Předmět e-mailu" – destinantion-email@domain.com
Paráda ne? 🙂
Závěr
K čemu se hodí posílání e-mailů z příkazové řádky?
Jistě máte na Raspberry nějakou aplikaci do které by se hodila e-mailová notifikace. Třeba meteostanice nebo webové stránky 😉.
Zdroje:
Raspberry Pi forum
Posílání e-mailů s přílohou
Článek, který mě na tento návod přivedl