Welcome to Our Website

16 Kommandoexempel för att skicka e-post från kommandoraden Linux

oavsett om du är en utvecklare som arbetar non-stop i kommandoraden Linux eller en serveradministratör som vill ha loggar eller andra data extraherade från administrerade system, är det mycket användbart att veta hur man skickar e-post från kommandoraden.

i det här inlägget hittar du exempel på hur du skickar e-post från terminalen. Vi tittar på anpassade konfigurationer och trycker på hur du ställer in SMTP-anslutningar till e-postkonton eller e-postleverantörer., Jag visar dig hur du installerar de nödvändiga konsolmailerpaketen och ger Bakgrund för kommandoradsalternativ baserat på paketets manualer.

ställa in Kommandoradsmailerpaket

alla mailerpaket under handledningen är tillgängliga via Debians avancerade pakethanterare, så installationsstegen i exemplet nedan kan användas för alla showcased-paket.,

Observera att dessa delar av programvaran kan installeras av andra standardpakethanterare som yumellerdnf beroende på din Linux-systemdistribution.

i de flesta fall är antingen sendmail eller postfix tillgänglig i varje Linux-distribution Out-of-the-box eller åtminstone det är vad liknande blogginlägg säger. Antingen är jag otur eller de andra hade fel, men jag var tvungen att installera en manuellt. Men du behöver definitivt en av dem för e-postleverans.,

konfigurera Sendmail med ssmtp-paket

jag fortsätter medsendmail och ssmtp-paketet. Ssmtp innehåller paketet sendmail under huven som du ser och det underlättar konfigurationen, vilket är ganska svårt försendmail annars.

Steg 1., Kontrollera om Kommandoradsmailerpaketet är installerat

skriv in mailerpaketets namn precis som du skulle köra kommandot för att kontrollera om det är tillgängligt:

  • om paketet är installerat körs kommandot och prompten ändras — när du försöker köra kommandot — och du ser en blinkande markör följt av meddelandet Recipient names must be specified när det gäller sendmail. Slutsats: paketet är installerat.,

  • om paketet inte är installerat får du ett varningsmeddelande och ett förslag om hur du installerar det:

i det här exemplet försökte jag om kommandot sendmail fungerar. När vi har lagt till ssmtp-paketet fungerar det här kommandot och kommandot ssmtp både och ändrar kommandotolken i terminalen. Låt oss titta på det!

steg 2., Installera Sendmail Command Line Mailer Package

som terminalutgången föreslog måste vi köra kommandot Advanced Package Manager ’ s install – vanligtvis med root-behörighet-för att installera det nödvändiga paketet. Som tidigare nämnts är konfigurationerna mycket enklare försendmail när du bortser från konfigurationens komplexitet. Det kan göras med ssmtp:

 sudo apt install ssmtp

steg 3. Verifiera installationen

När installationen är klar kan du kontrollera om sendmail kan vidarebefordra meddelanden., Skriv nedanstående kod i terminalen:

 echo "Subject: hello" | sendmail [email protected]

det ska skicka ut e-postmeddelandet om allt fungerar korrekt. Här kommer kommandot"hello" att skickas till kommandotsendmail, medan den definierade e-postadressen naturligtvis är mottagaren av e-postmeddelandet.

Du kör kommandot… och, oops: sendmail: Cannot open mailhub:25. Anledningen till detta är att vi inte tillhandahöll mailhub-inställningar alls. För att vidarebefordra meddelanden behöver du en SMTP-server konfigurerad., Det är där ssmtp fungerar riktigt bra: du behöver bara redigera sin konfigurationsfil en gång, och du är bra att gå.steg 4. Konfigurera ssmtp

låt oss hitta konfigurationsfilen på/etc/ssmtp/ssmtp.conf. Här bör du sätta koden nedan för att konfigurera ett SMTP-relä:

det betyder att du ställer in en extern tjänst som faktiskt kommer att vidarebefordra
dina e-postmeddelanden. När du till exempel anger autentiseringsuppgifter för Gmail ser du meddelandena som skickas från terminalen i brevlådans katalog skickat e-post. Konfigurationerna ser också ut som andra tjänster.,

detta var den grundläggande konfigurationen för sendmail och installationsstegen för alla kommandoradsmailerpaket som ofta används. Därefter hoppar vi på att installera och prova olika andra paket.

skicka e-post med kommandot ssmtp

det här är ett trevligt litet verktyg som vi just konfigurerat för postleverans. Som dessman sida antyder, det är en minimalistisk emulator avsendmail. Som sådan tillåter ssmtp användare att överföra e-post via en SMTP-server från Linux-kommandoraden., Det ger möjlighet att ansluta till en mailhub med en korrekt konfigurationsfil. Om din konfigurationsfil var inställd rätt, alla dina bekymmer om kommandoraden e-post skicka kan försvinna.

grundläggande implementering av kommandot SSTMP:

om du bara använder ssmtp ska kommandot se ut så här:

 ssmtp [email protected] < mail.txt

efter kommandot ssmtp ska du sätta mottagaradressen, så kan du inkludera en fil som kommer att visas i e-postkroppen. Här kan du definiera rubriker för meddelandet, lista ytterligare mottagare och ställa in innehållstypen., På så sätt kan du skicka HTML-e-post. SSMTP tolkar ditt meddelande och använder de angivna värdena korrekt. Här är ett exempel på en HTML som du kan skicka:

Du kan inte riktigt ge ytterligare alternativ med ssmtp eftersom de inte respekteras av sin minimalistiska design.

felsökning:

om du stöter på följande fel på kommandoraden:

det är troligt att Gmail inte behandlar SSMTP som ett säkert program. För att bli av med det här felet måste du ändra inställningarna i ditt Gmail – konto-Du kan också leta upp mer information om potentiella risker där.,

skicka e-post med kommandot Sendmail

under ganska lång tid är sendmail den klassiska postöverföringsagenten från Unix-världen. Det introducerades först 1979 och dess mycket konfigurerbara natur och skalbarhet gjorde det till standard go-to för serveradministratörer.,

Vi har redan sett hur man skickar grundläggande e-postmeddelanden med kommandotssmtp, så låt oss se skillnaden med sendmail:

 echo "Subject: hello" | sendmail -v [email protected] < mail.txt

Jag kastade in argumentet -v, vilket gör kommunikationen mellan e-postservern och din e-postöverföringsagent synlig.

det finns gott om konfigurationer som du kan använda om du konfigurerar din egen e-postserver och implementerar sendmail på den. Detta omfattas dock inte av denna artikel. Vi kommer tillbaka till ämnet i en kommande. Håll ögonen öppna.,

skicka e-post med CURL Command

det här verktyget är också oerhört vanligt för dataöverföring från en server. Den stöder många protokoll, som HTTP, FTP, POP3 eller SMTP. CURL-paketet används i stor utsträckning runt om i världen, en viktig anledning är att det har inbyggd PHP-implementering och PHP var standard serversidan skriptspråk under lång tid.

Installation:

kontrollera om paketet redan är installerat., Om du inte kör nedanstående:

 sudo apt install curl

När du är klar kan du komma åt fuskbladet för de tillgängliga alternativen för CURL genom att köra curl -h. Den mer detaljerade versionen är tillgänglig av antingen man curlellercurl --manual. Om du vill få fördjupad kunskap med cURL, det finns denna praktiska Ebook som innehåller allt du någonsin vill veta.

grundläggande implementering för e-postsändning med CURL:

för att kunna skicka ett e-postmeddelande med CURL måste du konfigurera SMTP-anslutning., Oftast används Googles eller Yahoos utgående e-postservrar för att testa e-postsändning med SMTP. Observera att du måste aktivera åtkomst för mindre säkra appar i Gmail-Inställningar och liknande ytterligare säkerhetsinställningar kan också gälla för Yahoo.

i terminalkommandot ovan definierar parametrarna--url och--user SMTP-anslutningsinställningarna. Lösenordsdelen för--user – parametern är ditt kontos lösenord för den angivna e-postadressen. Naturligtvis kan du också använda moln e-postleverantörer., Jag kommer att visa att använda Mailgun i följande avsnitt.

avancerad implementering för att skicka e-post med CURL:

arbeta med E-postleveransplattformar måste du först få en API-nyckel. I den här handledningen visar jag CURL e-postsändningsexempel med Mailgun, så om du fastnar under registreringsprocessen följer du den här installationsguiden för att komma på rätt spår.

syntaxen är ganska enkel. Du kanske har märkt tidigare, men du måste avsluta varje rad i kommandot med\ tecken., Detta är en linje fortsättning tecken, kommandot kan köras utan dem alla i en rad också. Det andra att komma ihåg är alternativet -F. Ett utdrag från mansidan:

 -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.

som jag uppmuntrade tidigare är det en bra praxis att dyka in i manualerna när du använder dessa kommandoradsmailerkommandon. Som CURL manualen säger, skapar du i princip ett formulär att skicka. Varje rad är en post som ges som ettname=content par. När du bifogar filer från din lokala dator behöver du en @ framför filnamnet.,

det här är hur det levererade e-postmeddelandet kommer att se ut:

Du kan göra detsamma med de flesta andra e-postleveransplattformarna, till exempel Sendgrid.

skicka HTML-e-post från kommandoraden med CURL:

Du kan använda samma logik för att bygga ett formulär i en textfil, vilket gör att du enkelt kan skicka HTML-meddelanden:

om du kör det enkla kommandot från det första exemplet…

felsökning:

Du kan behöva --insecure – omkopplaren, vilket gör att CURL kan utföra SSL-anslutningar och överföringar med ”osäker”., CURL kommer att returnera ett felmeddelande om fjärrservern använder ett självsignerat certifikat, eller om fjärrservercertifikatet inte är signerat av en CA som anges i CA cert-filen.

skicka e-post med Swaks command

eftersom deras dokumentation säger är Swaks ett flexibelt, scriptable, transaktionsorienterat SMTP-testverktyg. Det kan hantera SMTP-funktioner och tillägg som TLS, autentisering och pipelining och flera versioner av SMTP-protokollen. Det stöder också flera transportmetoder, inklusive UNIX-domänuttag, Internet-domänuttag och rör till skapade processer.,

Installation:

 sudo apt install swaks

grundläggande implementering för att skicka e-post med Swaks:

för att ansluta till ett SMTP-konto måste du tillhandahålla servern-s, användaren-au, lösenordet-ap och adressen-ap. -t (där du vill skicka ditt mail) flaggor. Flaggan-tlsär också viktig om du ansluter till port 587.,

 swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>

autentiseringsuppgifterna kan också tillhandahållas via kommandoradsmeddelanden, om du bara anger att autentisera-a, utan att fylla i användaren och lösenordet via kommandoradsalternativ.

avancerad implementering för e-postsändning med Swaks:

 swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt

det finns andra alternativ som vi inte kommer att röra nu. Låt oss gå till vårt nästa mailerpaket!

skicka e-post med mutt-kommandot

Mutt skiljer sig från tidigare e-postklienter, eftersom det är en funktionsrik kommandorads-e-postklient., Du kan använda den för att läsa e-postmeddelanden från Linux-terminalen, ansluta till lokala användarpostlådor eller till POP/IMAP-servrar. Mutt stöder flera brevlåda format som MBOX, MH, maildir, MMDF, full kontroll över meddelande rubriker under e-postsammansättning, och flera meddelande taggning och färger för att hantera meddelanden.

Installation:

 sudo apt install mutt

grundläggande implementering för att skicka e-post med mutt:

vid den här tiden kommer du inte att bli överraskad av kommandostrukturen., Du kan tillhandahålla en tom meddelandekropp med < /dev/null:

# mutt -s "Test Email" [email protected] < /dev/null

avancerad implementering för e-postsändning med mutt:

för att skicka e-post inklusive bilagor behöver du flaggan -a. På så sätt kan du skicka användbara filer, som systemloggar, till en viss adress.

# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null

Du kan också skicka HTML-e-post om filtillägget du lägger till i meddelandekroppen är i HTML-format., Mutt känner igen filtypen och löser den så att den inte skickar din HTML som vanlig text:

mutt -s "Email subject" [email protected] < email.html

det här är det för att skicka e-post med mutt. Om du har det på din dator, skulle jag föreslå att prova hur du kan arbeta med inkommande konfigurera din brevlåda och hantera inkommande meddelanden. Om du gör det, Vänligen dela dina tankar i kommentarfältet nedan. Jag välkomnar alla åsikter om de paket som visas i handledningen.

skicka e-post med mailx-kommandot

Mailutils är ett sammansatt paket för flera användningsfall., Den är utformad för att tjäna vanliga användare, systemadministratörer och utvecklare. Vi kommer bara att beröra dess grundläggande funktioner när det gäller vidarebefordran av e-post. Om du är intresserad av fler funktioner, kolla in dessman sida.

Installation:

 sudo apt install mailutils

grundläggande implementering för e-postsändning med mailx:

mailx-paketet har 2 lika kommandosyntax (mail och mailx båda fungerar på exakt samma sätt)., Det mest förenklade kommandot består av kommandotmail/mailx och adressen för att skicka e-postmeddelandet till, men du skulle förmodligen inkludera ämnet och åtminstone någon textbaserad meddelandekropp. Ett sådant kommando ska se ut så här:

 echo "message body" | mail -s "subject" [email protected]

genom att använda kommandotecho och leda utmatningen till kommandotmail kan du undvika mailxs ytterligare uppmaningar för Cc-adresser och meddelandekroppen.,

avancerad implementering för e-postsändning med mailx:

För det avancerade exemplet skickar vi en fullfjädrad HTML-e-post igen. Vi måste tillhandahålla HTML-filen för e-post som vi väljer med tecknet < och lägga till ”append flag” med innehållstypen. Den fullständiga koden ser ut som följer:

 mailx -a 'Content-Type: text/html' -s "This is advanced mailx indeed!" < email.html "[email protected], [email protected]"

Du kan också ställa in en returadress med --return-address=<EMAIL-ADDRESS>, vilket kan vara användbart., Ett annat användbart alternativ, som jag inte kunde lösa för att arbeta med HTML-e-post parallellt, är att tillhandahålla bilagor i samma meddelande: -A "mail.txt". Även om du kan lista flera mottagare kan endast en enda bilaga bifogas. Du kan konfigurera extern SMTP-server om det fancies du.

använda Telnet Alternative Openssl Command

Telnet är ett interaktivt kommunikationsprotokoll för kommunikation med en annan värd. Det kan användas för att öppna en SMTP-anslutning till en annan server och överföra e-postmeddelanden., Eftersom protokollet inte är säkrat kommer de flesta servrar att avvisa denna kommunikationstyp. Det är där Openssl kommer in i bilden som den är byggd med SSL / TLS säkerhet ingår. Det anropas på samma sätt som telnet med ett värdargument, och det utför ett öppet kommando implicit:

jag indragen de ingångar du behöver ange medan kommunikationskanalen är öppen. Dessa ingångar är självförklarande, men en sak jag behöver detaljer är lösenordshashen. Det kan vara en base64-kodad hash, som du kan få med följande kommando: echo -en '\[email protected]\000gmailpassword' | base64., Flykten tecken från strängen kan inte utelämnas. Om du inte har base64-paketet installerat är det tillgängligt via pakethanterare.

som du kan se ovan ger detta sätt att skicka e-post endast ett gränssnitt för textbaserade meddelanden, därför har det sin begränsning i användningsfall. Å andra sidan visar den all information som utbyts med e-postservern, vilket gör felsökning väldigt enkelt.

felsökning av e-postproblem

kontrollera e-postloggarna

Du måste hitta loggfilen genom att navigera till motsvarande mapp. Jag föredrar att använda min kod redaktör (t.ex., Sublime Text) för detta så att jag kan få loggarna med syntax highlight:

$ sudo subl /var/log

beroende på din nuvarande Linux-distribution kan du behöva titta på olika källor.
loggen kan innehålla användbar information om leveransproblem. Vid denna tidpunkt, när du bläddrar till botten av detta:

Du kan inspektera om leveransen lyckas eller förstå varför processen misslyckades.,
det kan hända att din konsol inte visar några fel, men i e-postloggen kan du se att meddelandet köades för leverans, så processen stannade inte på din dator men förmodligen nekades av e-postservern du försökte nå.

kör alla kommando i en sekvens

så är allt klart för det slutliga testet. Alla mailer terminal kommandon samlas här i en skriptfil. När du har hämtat arbetsmappen med scriptfilen i den, navigera till den innehållande mappen och gör scriptet körbart: chmod u+x mail.sh., Om du har alla filer jag gav redo, kan du börja testa mailer kommandon som visas i handledningen. Du behöver bara ersätta"<RECIPIENT ADDRESS>" till din test e-postadress i koden och kör./mail.sh I kommandoraden.

När skriptet är klart kommer din inkorg att fyllas i med testmeddelandena.

bra gjort!

sammanfattning

i den här artikeln visade jag dig många sätt att skicka e-post från kommandoraden Linux. Förhoppningsvis, baserat på vad du såg, kan du installera och konfigurera dessa tjänster på din maskin själv också.,

inlägget visade de vanligaste kommandoradsmailerpaketen och hur man skickar e-post med dem, och i slutändan skapade jag ett skalskript som samlar alla kommandon som används i artikeln. Du kan ladda ner projekt som arbetar filer här, och om du installerar de paket som infördes i handledningen och även fylla i dina referenser och mottagaruppgifter, kan du köra skriptet på din fritid.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *