Akár egy fejlesztő dolgozik non-stop a Linux parancssorból vagy egy adminisztrátornak akar naplók vagy más adatok kivont alkalmazott rendszerek, tudva, hogy küldjön e-mailt a parancssor nagyon hasznos.
ebben a bejegyzésben példákat talál arra, hogyan küldhet e-mailt a terminálról. Megnézzük az egyéni konfigurációk, majd érintse meg, hogyan kell beállítani SMTP kapcsolatok e-mail fiókok vagy e-mail szolgáltatók., Megmutatom, hogyan kell telepíteni a szükséges konzol mailer csomagok, valamint a háttér parancssori lehetőségek alapján a csomag kézikönyvek.
parancssori Mailer csomagok beállítása
az oktatóanyagban található összes mailer csomag a Debian speciális Csomagkezelőjén keresztül érhető el, így az alábbi példában szereplő telepítési lépések felhasználhatók az összes bemutatott csomaghoz.,
Felhívjuk figyelmét, hogy ezeket a szoftvereket más alapértelmezett csomagkezelők is telepíthetik, mint például a yum
vagy dnf
A Linux rendszer terjesztésétől függően.
a legtöbb esetben vagy sendmail
vagy postfix
minden Linux disztribúcióban elérhető a dobozon kívül, vagy legalábbis ezt mondják a hasonló blogbejegyzések. Vagy szerencsétlen vagyok, vagy a többiek tévedtek, de manuálisan kellett telepítenem egyet. Azonban feltétlenül szüksége van az egyikre az e-mail kézbesítéshez.,
Sendmail beállítása ssmtp csomaggal
folytatom a sendmail
és az SSMTP csomaggal. SSMTP tartalmazza asendmail
csomag a motorháztető alatt, mint látni fogja, és megkönnyíti a konfigurációt, ami elég nehézsendmail
egyébként.
1. lépés., Ellenőrizze, hogy a parancssori Mailer csomag telepítve van — e
írja be a mailer csomag nevét csak úgy, ahogy a parancsot futtatja, hogy ellenőrizze, hogy elérhető — e:
-
Ha a csomag telepítve van, a parancs fut, és a parancssor megváltozik-miközben megpróbálja végrehajtani a parancsot -, majd megjelenik egy villogó kurzor, amelyet a
Recipient names must be specified
. Következtetés: a csomag telepítve van., -
Ha a csomag nincs telepítve, figyelmeztető üzenetet és javaslatot kap a telepítéshez:
ebben a példában megpróbáltam, ha a sendmail
parancs működik. Miután hozzáadtuk az SSMTP csomagot, ez a parancs és assmtp
parancs mind működni fog, mind pedig megváltoztatja a parancssort a terminálon. Nézzük meg!
2. lépés., Telepítése Sendmail parancssori Mailer csomag
ahogy a terminál kimenet javasolt, meg kell futtatni az Advanced Package Manager telepítési parancs-általában root engedély-telepíteni a szükséges csomagot. Mint korábban említettük, a konfigurációk sokkal egyszerűbbek a sendmail
esetén, amikor elvonja a konfiguráció összetettségét. Ezt meg lehet tenni az SSMTP:
sudo apt install ssmtp
3.lépés. Ellenőrizze a telepítést
a telepítés befejezése után ellenőrizheti, hogy a sendmail
képes-e üzeneteket továbbítani., Írja be az alábbi kódot a terminálba:
echo "Subject: hello" | sendmail [email protected]
el kell küldenie az e-mailt, ha minden megfelelően működik. Itt a"hello"
karakterlánc asendmail
parancsra lesz rögzítve, míg a megadott e-mail cím természetesen az e-mail címzettje.
futtatja a parancsot… és hoppá: sendmail: Cannot open mailhub:25
. Ennek oka az, hogy egyáltalán nem adtuk meg a mailhub beállításait. Az üzenetek továbbításához szükség van egy konfigurált SMTP kiszolgálóra., Ez az, ahol az SSMTP nagyon jól teljesít: csak egyszer kell szerkesztenie a konfigurációs fájlt, és jó menni.
4. lépés. Konfigurálása SSMTP
nézzük keresse meg a konfigurációs fájl /etc/ssmtp/ssmtp.conf
. Itt az alábbi kódot kell megadnia az SMTP relé konfigurálásához:
Ez azt jelenti, hogy olyan külső szolgáltatást állít be, amely ténylegesen továbbítja az e-maileket
. Amikor például hitelesítő adatokat ad meg a Gmailnek, a postafiók “Elküldött levelek” könyvtárában láthatja a terminálról küldött üzeneteket. A konfigurációk hasonlóak a többi szolgáltatáshoz is.,
Ez volt asendmail
alapkonfigurációja, valamint a gyakran használt parancssori mailer csomag telepítési lépései. Ezután ugrik a Telepítés, majd próbálja ki a különböző egyéb csomagok.
e-mail küldése az ssmtp paranccsal
Ez egy szép kis eszköz, amelyet csak a postai kézbesítéshez konfiguráltunk. Ahogy aman
oldal sugallja, ez a sendmail
minimalista emulátor. Mint ilyen, az SSMTP lehetővé teszi a felhasználók számára, hogy az SMTP kiszolgálón keresztül továbbítsák az e-maileket a Linux parancssorból., Ez biztosítja az eszközöket, hogy csatlakozzon a mailhub egy megfelelő konfigurációs fájlt. Ha a konfigurációs fájlt helyesen állította be, akkor a parancssori e-mail küldésével kapcsolatos összes aggodalom eltűnik.
az Sstmp parancs alapvető végrehajtása:
Ha csak az SSMTP-t használja, a parancsnak a következőképpen kell kinéznie:
ssmtp [email protected] < mail.txt
a ssmtp
parancsot követve tegye a címzett címét, akkor tartalmazhat egy fájlt, amely megjelenik az e-mail testben. Itt megadhatja az üzenet fejléceit, felsorolhatja a további címzetteket, majd beállíthatja a tartalom típusát., Így HTML e-maileket küldhet. Az ssmtp értelmezi az üzenetet, és megfelelően használja a megadott értékeket. Itt van egy példa egy HTML küldhet:
nem igazán ad további lehetőségeket SSMTP mivel nem tartják tiszteletben a minimalista design.
hibaelhárítás:
abban az esetben, ha a parancssorban a következő hibába ütközik:
Ez valószínűleg azért van, mert a Gmail nem kezeli az SSMTP-t biztonságos alkalmazásként. Ahhoz, hogy megszabaduljon ettől a hibától, meg kell változtatnia a beállításokat a Gmail – fiókjában-további információkat kereshet a lehetséges kockázatokról is.,
e-mail küldése a Sendmail parancs segítségével
már jó ideje a sendmail a UNIX világának klasszikus levélátviteli ügynöke. Először 1979-ben mutatták be, és jól konfigurálható jellege és skálázhatósága miatt ez lett az alapértelmezett go-to a szerver adminisztrátorok számára.,
már láttuk, hogyan küldhetünk alapvető e-maileket a ssmtp
parancs segítségével, tehát nézzük meg a különbséget a sendmail
:
echo "Subject: hello" | sendmail -v [email protected] < mail.txt
bedobtam a argumentum, amely láthatóvá teszi a levelezőszerver és a levélátviteli ügynök közötti kommunikációt.
rengeteg konfigurációt lehet használni, ha beállítja a saját levelező szerver és végre sendmail rajta. Ez azonban nem tartozik e cikk hatálya alá. Visszatérünk a témához egy közelgő témában. Maradjanak velünk.,
e-mail küldése CURL paranccsal
Ez az eszköz rendkívül gyakori a szerverről történő adatátvitelhez. Számos protokollt támogat, például HTTP, FTP, POP3 vagy SMTP. A CURL csomagot széles körben használják szerte a világon, ennek egyik fő oka az, hogy natív PHP implementációval rendelkezik, a PHP pedig hosszú ideig az alapértelmezett szerver oldali szkriptnyelv volt.
telepítés:
ellenőrizze, hogy a csomag már telepítve van-e., Ha nem futtatja az alábbiakat:
sudo apt install curl
Ha elkészült, a curl -h
futtatásával elérheti a curl elérhető opcióit. A részletesebb verzió elérhető a man curl
vagy curl --manual
. Ha azt szeretnénk, hogy szert mélyreható tudás segítségével cURL, van ez a praktikus Ebook, amely mindent tartalmaz, amit valaha is szeretné tudni.
alapvető végrehajtása e-mail küldés CURL:
annak érdekében, hogy küldjön egy e-mailt CURL, be kell állítani SMTP kapcsolat., Leggyakrabban a Google vagy a Yahoo kimenő e-mail szervereit használják az SMTP-vel történő e-mail küldés tesztelésére. Kérjük, vegye figyelembe, hogy be kell kapcsolnia a hozzáférést a kevésbé biztonságos alkalmazásokhoz a Gmail beállításaiban, valamint hasonló további biztonsági beállítások is alkalmazhatók a Yahoo-ra.
a fenti parancsrészletben a --url
és --user
paraméterek határozzák meg az SMTP kapcsolat beállításait. A --user
paraméter jelszó szakasza a fiókod jelszava az adott e-mail címhez. Természetesen felhőalapú e-mail szolgáltatókat is használhat., Megmutatom, hogy a Mailgun a következő részben.
speciális végrehajtás az e-mail küldéshez CURL:
az e-mail kézbesítési platformokkal való munka során először API kulcsot kell beszereznie. Ebben a bemutatóban megmutatom a CURL e-mail küldési példát a Mailgun használatával, tehát ha elakad a regisztrációs folyamat során, kövesse ezt a beállítási útmutatót, hogy a helyes úton haladjon.
a szintaxis nagyon egyszerű. Lehet, hogy korábban észrevette, de a parancs minden sorát \
karakterekkel kell befejeznie., Ez egy sor folytatása karakter, a parancs futtatható nélkülük minden egy sorban is. A másik dolog, hogy emlékezzen a -F
opció. Kivonat a man oldalról:
-F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to RFC 2388. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @sign.
ahogy korábban bátorítottam, ez egy jó gyakorlat, hogy belemerüljön a kézikönyvekbe, amikor ezeket a parancssori mailer parancsokat használja. Ahogy a CURL kézikönyv mondja, alapvetően létrehoz egy űrlapot, amelyet elküldhet. Minden sor egy name=content
párként megadott bejegyzés. Amikor fájlokat csatol a helyi gépről, szüksége van egy @
a fájlnév előtt.,
így fog kinézni a kézbesített e-mail:
ugyanezt teheti a többi e-mail kézbesítési platform többségével, például a Sendgrid segítségével.
HTML e-mail küldése a parancssorból CURL:
ugyanazt a logikát alkalmazhatja egy űrlap szöveges fájlban történő felépítésére, amely lehetővé teszi HTML üzenetek egyszerű küldését:
Ha az első példából futtatja az egyszerű parancsot…
hibaelhárítás:
szükség lehet a --insecure
kapcsolóra, amely lehetővé teszi a CURL számára, hogy “nem biztonságos” SSL kapcsolatokat és transzfereket hajtson végre., A CURL hibaüzenetet küld, ha a távoli kiszolgáló önaláírt tanúsítványt használ, vagy ha a távoli kiszolgáló tanúsítványát nem írja alá a CA cert fájlban felsorolt CA.
e-mail küldése Swaks paranccsal
mivel dokumentációjuk kimondja, a Swaks egy rugalmas, szkriptálható, tranzakció-orientált SMTP teszt eszköz. Képes kezelni SMTP funkciók és kiterjesztések, mint a TLS, hitelesítés, és pipelining és több változata SMTP protokollok. Több szállítási módot is támogat, beleértve a UNIX-domain aljzatokat, az internet-domain aljzatokat, valamint a csöveket az ívott folyamatokhoz.,
telepítés:
sudo apt install swaks
alapvető végrehajtás az e-mail küldéshez Swaks:
egy SMTP-fiókhoz való csatlakozáshoz meg kell adnia a kiszolgálót -s
, a felhasználó -au
, A jelszó -ap
és a -t
(ahol e-mailt szeretne küldeni) zászlók. A-tls
zászló akkor is fontos, ha a587
porton csatlakozik.,
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>
a hitelesítő adatok parancssori utasításokon keresztül is megadhatók, ha csak a -a
hitelesítéséhez adja meg, nem tölti ki a felhasználót és a jelszót parancssori beállításokon keresztül.
Advanced implementation for email sending with Swaks:
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt
vannak más lehetőségek, amelyeket most nem fogunk megérinteni. Menjünk a következő levelező csomagunkhoz!
e-mail küldése a Mutt parancs segítségével
Mutt különbözik az előző e-mail kliensektől, mivel ez egy funkciókban gazdag parancssori e-mail kliens., Használhatja e-mailek olvasására a Linux terminálról, csatlakozva a helyi felhasználói postafiókokhoz vagy a POP/IMAP szerverekhez. A Mutt számos postafiók formátumot támogat, mint például az mbox, az MH, a maildir, az MMDF, az üzenetfejlécek teljes ellenőrzése az e-mail összetétel során, valamint több üzenet címkézése és színek az üzenetek kezeléséhez.
telepítés:
sudo apt install mutt
alapvető végrehajtása e-mail küldés mutt:
Ez idő alatt nem fog lepődni a szerkezet a parancs., Megadhat egy üres üzenet test < /dev/null
:
# mutt -s "Test Email" [email protected] < /dev/null
speciális végrehajtása e-mail küldés mutt:
az e-mail küldéséhez, beleértve a mellékleteket, akkor szükség van a -a
zászló. Így hasznos fájlokat, például rendszernaplókat küldhet egy megadott címre.
# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null
HTML e-mailt is küldhet, ha az üzenet törzséhez hozzáadott fájlkiterjesztés HTML formátumban van., A Mutt felismeri a fájltípust, és megoldja, így nem küldi el a HTML-t egyszerű szövegként:
mutt -s "Email subject" [email protected] < email.html
Ez az e-mail küldés a mutt-vel. Ha van a gépen, azt javaslom, hogy próbálja ki, hogyan tud dolgozni a bejövő konfigurálása a postafiók kezelése bejövő üzeneteket. Ha így tesz, kérjük, ossza meg gondolatait az alábbi megjegyzés szakaszban. Üdvözlöm a bemutatóban bemutatott csomagokkal kapcsolatos véleményeket.
e-mail küldése a Mailx paranccsal
a Mailutils összetett csomag több felhasználási esethez., Úgy tervezték, hogy szolgálja a rendszeres felhasználók, rendszergazdák, Fejlesztők. Csak az e-mail továbbítással kapcsolatos alapvető funkcióit fogjuk megérinteni. Ha további funkciók iránt érdeklődik, nézze meg a man
oldalát.
telepítés:
sudo apt install mailutils
alapvető végrehajtása e-mail küldés mailx:
a mailx csomag 2 egyenlő parancs szintaxis (mail
és mailx
mindkettő pontosan ugyanúgy működik)., A legegyszerűbb parancs amail/mailx
parancsból és az e-mail címből áll, de valószínűleg magában foglalja a témát és legalább néhány szöveg alapú üzenettestet. Egy ilyen parancsnak így kell kinéznie:
echo "message body" | mail -s "subject" [email protected]
a echo
parancs használatával a kimenetet a mail
parancsra továbbíthatja, így elkerülheti a mailx további utasításait a Cc címekre és az üzenet törzsére.,
Advanced implementation for email sending with mailx:
a speciális példa, küldünk egy teljes értékű HTML e-mailt újra. Meg kell adnunk a választott e-mail HTML fájlt a <
karakterrel, majd hozzá kell adnunk a “csatolási zászlót” a tartalom típusához. A teljes kód a következőképpen néz ki:
mailx -a 'Content-Type: text/html' -s "This is advanced mailx indeed!" < email.html "[email protected], [email protected]"
a --return-address=<EMAIL-ADDRESS>
visszatérési címet is beállíthatja, amely hasznos lehet., Egy másik hasznos lehetőség, amelyet nem tudtam megoldani a HTML e-mail párhuzamos használatával, az, hogy csatolmányokat biztosítsunk ugyanabban az üzenetben: -A "mail.txt"
. Bár több címzettet is felsorolhat,csak egyetlen melléklet csatolható. Konfigurálhatja a külső SMTP kiszolgálót, ha ez tetszik.
A Telnet alternatív Openssl parancs használata
a Telnet egy interaktív kommunikációs protokoll egy másik gazdagéppel való kommunikációhoz. Ezt fel lehet használni, hogy nyissa meg az SMTP kapcsolatot egy másik szerverre, és át e-mail üzeneteket., Mivel azonban a protokoll nincs biztosítva, a legtöbb szerver elutasítja ezt a kommunikációs típust. Ez az, ahol az Openssl bekerül a képbe, mivel SSL / TLS biztonságot tartalmaz. Ez hivatkozni hasonlóan a telnet egy fogadó érv, valamint ellátja a nyílt parancs implicit módon:
én tagolt a bemenetek meg kell adnia, miközben a kommunikációs csatorna nyílt. Ezek a bemenetek magától értetődő, de egy dolog, amit meg kell részletezni a jelszó hash. Ez lehet egy base64 kódolt hash, amely a következő paranccsal érhető el: echo -en '\[email protected]\000gmailpassword' | base64
., A karakterlánc menekülési karakterei nem hagyhatók ki. Ha nincs telepítve a base64 csomag, akkor a csomagkezelőkön keresztül érhető el.
mint fent látható, ez az e-mail küldés csak szöveges üzenetek felületét biztosítja, ezért korlátozza a használati eseteket. Másrészt megmutatja az e-mail szerverrel kicserélt összes információt, ami nagyon egyszerűvé teszi a hibakeresést.
hibaelhárítás Mail problémák
ellenőrizze a mail naplók
meg kell, hogy keresse meg a log fájlt navigálva a megfelelő mappába. Inkább a kódszerkesztőt használom (pl., Sublime Text) ehhez, így lehet, hogy a naplók szintaxis kiemelés:
$ sudo subl /var/log
attól függően, hogy a jelenlegi Linux disztribúció akkor lehet, hogy nézd meg a különböző forrásból.
a napló hasznos információkat tartalmazhat a szállíthatósági problémákról. Ezen a ponton, amikor ennek aljára lép:
ellenőrizheti, hogy a szállítás sikeres-e, vagy megértheti, miért nem sikerült a folyamat.,
előfordulhat, hogy a konzol nem mutat hibát, de a levélnaplóban láthatja, hogy az üzenet sorba került a kézbesítéshez, így a folyamat nem állt meg a gépen, de valószínűleg az elérni kívánt levelezőszerver megtagadta.
az összes parancs futtatása
sorrendben tehát minden készen áll a végső tesztre. Az összes mailer terminálparancsot itt gyűjtjük össze egy szkriptfájlban. Miután letöltötte a munkamappát a benne lévő szkriptfájllal, keresse meg a tartalmazó mappát, majd hajtsa végre a szkriptet: chmod u+x mail.sh
., Ha készen áll az összes általam megadott fájl, elkezdheti tesztelni a bemutatóban látható mailer parancsokat. Csak ki kell cserélnie a"<RECIPIENT ADDRESS>"
a teszt e-mail címét a kódban, majd futtassa a./mail.sh
parancsot a parancssorban.
miután a szkript befejeződött, a beérkező levelek kitöltésre kerülnek a teszt e-mailekkel.
jól sikerült!
összefoglaló
ebben a cikkben számos módot mutattam be e-mail küldésére a Linux parancssorból. Remélhetőleg a látottak alapján Ön is telepítheti és konfigurálhatja ezeket a szolgáltatásokat a gépére.,
a bejegyzés a leggyakrabban használt parancssori levelező csomagokat, valamint az e-mailek küldésének módját mutatta be velük, végül létrehoztam egy shell szkriptet, amely összegyűjti a cikkben használt összes parancsot. Letöltheti a projektek dolgozó fájlokat itt, és ha telepíti a csomagokat bevezetett bemutató, valamint töltse ki a hitelesítő adatokat, valamint a címzett adatait, akkor futtassa a script a szabadidő.