Tips en Trucs 2014

Mailen in de terminal en scripts

Deze tip is geen bespreking van een een e-mail programma voor de terminal, waarmee je e-mail berichten kunt lezen en versturen (zoals Mutt). Nee, deze tip toont hoe je met eenvoudige opdrachten een e-mail vanaf de terminal kunt versturen.

De benodigde pakketten zijn msmtp en mailx. Deze twee pakketten staan in de meeste standaard softwarebronnen van de meeste distributies. In openSUSE 13.1 is het mailx pakket standaard geïnstalleerd. Het msmtp pakket installeer je met de opdracht:

dany@linux-18zg:~> sudo zypper install msmtp
root's password:
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Afhankelijkheden tussen pakketten oplossen...

De volgende 4 NIEUWE pakketten zullen worden geïnstalleerd:
  libgsasl7 libgsasl-lang libntlm0 msmtp 

Het volgende aanbevolen pakket was automatisch geselecteerd:
  libgsasl-lang 

4 nieuw te installeren pakketten.
Totale downloadgrootte: 261,6 KiB Na de operatie zal aanvullend 729,3 KiB 
worden gebruikt.
Doorgaan? [j/n/? alle opties tonen] (j): 
pakket libntlm0-1.4-2.1.2.x86_64 wordt opgehaald
                                          (1/4),  43,4 KiB (124,8 KiB uitgepakt)
Ophalen: libntlm0-1.4-2.1.2.x86_64.rpm ..................................[klaar]
pakket libgsasl7-1.6.1-19.1.2.x86_64 wordt opgehaald
                                          (2/4),  88,4 KiB (210,7 KiB uitgepakt)
Ophalen: libgsasl7-1.6.1-19.1.2.x86_64.rpm ..............................[klaar]
pakket msmtp-1.4.28-8.1.2.x86_64 wordt opgehaald
                                          (3/4), 100,8 KiB (230,5 KiB uitgepakt)
Ophalen: msmtp-1.4.28-8.1.2.x86_64.rpm ....................[klaar (613,1 KiB/s)]
pakket libgsasl-lang-1.6.1-19.1.2.noarch wordt opgehaald
                                          (4/4),  29,0 KiB (163,4 KiB uitgepakt)
Ophalen: libgsasl-lang-1.6.1-19.1.2.noarch.rpm ..........................[klaar]
(1/4) Installeert: libntlm0-1.4-2.1.2 ...................................[klaar]
(2/4) Installeert: libgsasl7-1.6.1-19.1.2 ...............................[klaar]
(3/4) Installeert: msmtp-1.4.28-8.1.2 ...................................[klaar]
(4/4) Installeert: libgsasl-lang-1.6.1-19.1.2 ...........................[klaar]

Na het installeren, moet je nog twee configuratiebestanden in de persoonlijk map aanmaken (of in de /etc/ map voor gemeenschappelijk gebruik). Het eerste configuratiebestand is .msmtprc (joe .msmtprc). Voor Gmail wordt dit:

account gmail   
host smtp.gmail.com  
port 587  
protocol smtp  
auth on  
from Uw Naam  
user gebruikersnaam@gmail.com  
password uw-wachtwoord  
tls on  
tls_nocertcheck  
account default : gmail

Het tweede configuratiebestand is .mailrc. Voeg daar de volgende regel aan toe:

set sendmail=/usr/bin/msmtp

Na het aanmaken van deze twee configuratie bestanden, geef je .msmtprc de striktere bestandsrechten (dit bestand bevat immers een wachtwoord):

dany@linux-18zg:~> ls -l .msmtprc 
-rw-r--r-- 1 dany users 193  1 feb 14:05 .msmtprc
dany@linux-18zg:~> chmod 600 .msmtprc
dany@linux-18zg:~> ls -l .msmtprc 
-rw------- 1 dany users 193  1 feb 14:05 .msmtprc

Een e-mail versturen

Start een terminal en start de opdracht:

mail e-mailadres@domein.com

Typ het onderwerp van het e-mail bericht, gevolgd door Enter voor een nieuwe regel. Na het intypen van het bericht, sluit je af met Enter en Ctrl + D om de e-mail te versturen.

dany@linux-18zg:~> mail e-mailadres.p@domein.com
Subject: Terminal mail
Beste Dany,

Zo verstuur je e-mails met een opdracht in de terminal.

Na het typen van het bericht, druk je Ctrl + D om het bericht te versturen.

Groeten,
Dany Pinoy
EOT

Een andere manier om een e-mail te versturen, is gebruik maken van de echo opdracht. Deze methode kan je gebruiken in scripts.

dany@linux-18zg:~> echo "Hier uw bericht" | mail e-mailadres@domein.com

Om een bijlage mee te sturen, voeg je de optie -a toe:

dany@linux-18zg:~> echo "Hier uw bericht" | mail -a Documents/bijlage.zip e-mailadres@domein.com

Om pseudoniemen (aliassen) te gebruiken, plaats je in het configuratie bestand .mailrc alias regels:

alias broer broer.familie@gmail.com
alias werk werk.school@snt.be

Na het aanmaken van de aliassen in het .mailrc bestand, kan je als volgt e-mails verzenden:

dany@linux-18zg:~> echo "Hier uw bericht" | mail werk

Opmerking

Hoewel je met deze methode snel en gemakkelijk e-mails kunt versturen, kan iedereen met toegang tot het .msmtprc bestand uw wachtwoord lezen. M.a.w. Veiligheid voor alles. Systemen waarbij één account door verschillende gebruikers gebruikt wordt (openbare computers, computers die een standaard gebruiker automatisch aanmelden, enz.) passen best hun systeem aan zodat elke gebruiker zich met zijn eigen account kan aanmelden. Dit heeft als extra voordeel dat de favoriete instellingen en bestanden van elke gebruiker gescheiden opgeslagen worden. Openbare systemen zorgen best voor het opslaan van versleutelde wachtwoord (msmtp gebruikt daarvoor de instelling passwordeval). Voor openbare systemen moet je je afvragen of je het verzenden van e-mails via de terminal wel wilt aanbieden. Hoe minder een openbaar systeem aanbiedt, hoe minder risico's.