2012. augusztus 10., péntek

Email küldés parancssorból


Gyakran hasznos lehet, ha parancssorból tudunk emailt küldeni. Például, ha letöltődött egy torrent, beállíthatjuk Transmission-ben, hogy küldjön egy figyelmeztető emailt nekünk, vagy bármilyen más esemény esetén is megtehetjük ezt. Egy szerverként használt Raspberry Pi-nél ez egy hasznos figyelmeztető lehetőség lehet.
Arra gondoltam, hogy ez akkor lehetne igazán hasznos, hogyha a saját Gmail-es címemről tudnék írni, így rákerestem használhatnám-e a Gmail SMTP szerverét levelezésre konzolból. Sajnos (:D) találtam egy elég szép megoldást, így most nem kellett semennyit se kódolnom. Ezen az oldalon találtam egy szkriptet, amely a mailx és msmtp programok config fájljait készíti elő a Gmail SMTP szerverével való kommunikációra.
Itt letölthetjük a szkriptet, majd futtatás előtt a /tmp/test_email fájlba kell írni valamilyen szöveget, amit tesztelésként elküldünk magunknak:
echo "Ez egy teszt mail." > /tmp/test_email
Ezután nyissuk meg a fájlt:
gedit setup_gmail_command_line.sh

Majd állítsuk be a Gmail felhasználónkat, és jelszavunkat a következő résznél
GMAIL_USER='YOUR_GMAIL_USER_NAME'
GMAIL_PASS='YOUR_GMAIL_USER_PASSWORD'
Ekkor már elindíthatjuk a programot:
chmod +x setup_gmail_command_line.sh
sudo ./setup_gmail_command_line.sh install

Ha minden jól ment mostmár küldhetünk emaileket akár parancssorból is a következő paranccsal:
mailx -s "email tárgya" -a /csatolmányelérésiút/csatolmány.zip címzett@valami.hu < /emailszövegelérésiút/email.txt

vagy, ha sietünk nem is kell külön fájlba megírni az email törzsét:

echo "teszt" | mailx -s "tesztmail" címzett@valami.hu

-s kapcsolóval adható meg az email tárgya, -a kapcsolóval a csatolmány (ez el is hagyható), utána a címzett, majd az emailünk törzse.

Kiegészítésként megírom, hogyha saját teljes nevünkön akarjuk elküldeni az email-t, akkor a szkript 107-ik sorában módosítani kell a "($GMAIL_USER)"-t, a következőképpen:
19-ik sorba írjuk be egy változóba a teljes nevünk:
$GMAIL_FULLNAME='Teljes Név'
majd a 107-ikben:
set from="$GMAIL_USER@gmail.com ($GMAIL_FULLNAME)"

Update: Nem rég vettem észre, hogy a syslog tele van a következőhöz hasonló hibákkal:
Warning: program /usr/sbin/sensible-mda unsafe: No such file or directory
SYSERR(root): Cannot exec /usr/sbin/sensible-mda: No such file or directory
Rövid utánaolvasás után azt találtam, hogy a cikkben említett telepítőszkript, nem telepíti a sendmail program egy függőségét, így az egy csomó hiba forrása lesz. A helyes működéshez szükség van a következő program telepítésére is:
sudo apt-get install sensible-mda

4 megjegyzés:

  1. echo "Ez egy teszt mail." > /tmp/test-email

    Helyesen :

    echo "Ez egy teszt mail." > /tmp/test_email

    A test_email-ben aláhúzás jel van kötőjel helyett.

    VálaszTörlés
    Válaszok
    1. Szia,
      köszönöm a helyesbítést, javítva! :)

      Törlés
    2. Én meg a leírást köszönöm! Nagyon jól jött!

      Törlés
  2. Kedves Közzétevő! A fenti leírást követve első alkalommal rosszul adtam meg a felhasználó név / jelszó párosítást a *.sh fájlban. Javítást követően újra lefuttattam, de továbbra is azt írja, hogy nem megfelelő felhaszn./ jelszó párosítás. Mi lehet a probléma?

    VálaszTörlés