Welcome to Our Website

16 Opdrachtvoorbeelden om e-mail te verzenden vanaf de Linux opdrachtregel

of u nu een ontwikkelaar bent die non-stop werkt op de Linux opdrachtregel of een serverbeheerder die logs of andere gegevens uit beheerde systemen wil, weten hoe u e-mail vanaf de opdrachtregel moet verzenden, is zeer nuttig.

in dit bericht vindt u voorbeelden van het verzenden van e-mail vanaf de terminal. We kijken naar aangepaste configuraties en bespreken hoe u SMTP-verbindingen met e-mailaccounts of e-mailserviceproviders kunt instellen., Ik zal je laten zien hoe je de benodigde console mailer pakketten installeert en geef achtergrond voor command line opties op basis van de handleidingen van het pakket.

Opdrachtregelmailerpakketten instellen

alle mailerpakketten in de tutorial zijn beschikbaar via Debian ‘ s Advanced Package Manager, zodat de installatiestappen in het onderstaande voorbeeld kunnen worden gebruikt voor alle tentoongestelde pakketten.,

merk op dat deze stukken software kunnen worden geà nstalleerd door andere standaard pakketbeheerders zoals yum of dnf afhankelijk van uw Linux-systeemdistributie.

in de meeste gevallen is ofwel sendmail of postfix beschikbaar in elke Linux-distributie out-of-the-box of tenminste dat is wat vergelijkbare blogberichten zeggen. Of ik heb pech of de anderen waren verkeerd, maar ik moest een handmatig installeren. Echter, je zeker een van hen nodig voor e-mail levering.,

Sendmail instellen met ssmtp-pakket

Ik ga verder met sendmail en het ssmtp-pakket. Ssmtp bevat het sendmail pakket onder de motorkap zoals je zult zien en het vergemakkelijkt de configuratie, wat vrij moeilijk is voor sendmail anders.

Stap 1., Controleer of Command Line Mailer Package geïnstalleerd is

Typ de naam van het mailer package precies zoals u het commando zou uitvoeren, om te controleren of het beschikbaar is:

  • als het pakket geïnstalleerd is, wordt het commando uitgevoerd en verandert de prompt — terwijl u het commando probeert uit te voeren — en u zult een knipperende cursor zien gevolgd door het bericht Recipient names must be specified in het geval van sendmail. Conclusie: het pakket is geïnstalleerd.,

  • als het pakket niet is geïnstalleerd, ontvangt u een waarschuwingsbericht en een suggestie hoe het te installeren:

In dit voorbeeld heb ik geprobeerd of de opdracht sendmail werkt. Nadat we het ssmtp-pakket hebben toegevoegd, zullen dit commando en het ssmtp Commando zowel werken als de opdrachtprompt in de terminal wijzigen. Laten we daar eens naar kijken!

Stap 2., Sendmail Command Line Mailer Package

zoals de terminal uitvoer voorstelde, moeten we het installatie commando van de geavanceerde pakketbeheerder uitvoeren-meestal met root rechten-om het benodigde pakket te installeren. Zoals eerder vermeld, zijn de configuraties veel eenvoudiger voor sendmail wanneer je de complexiteit van de configuratie wegneemt. Dat kan met SSMTP:

 sudo apt install ssmtp

Stap 3. Controleer de installatie

nadat de installatie voltooid is, kunt u controleren of sendmail in staat is om berichten door te sturen., Typ de onderstaande code in de terminal:

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

Het zou de e-mail moeten versturen als alles correct werkt. Hier zal het "hello" tekenreeks doorsluizen naar het sendmail Commando het onderwerp zijn van het verzonden bericht, terwijl het gedefinieerde e-mailadres natuurlijk de ontvanger van de e-mail is.

u voert het commando uit… en, oops: sendmail: Cannot open mailhub:25. De reden hiervoor is dat we helemaal geen mailhub-instellingen hebben verstrekt. Om berichten door te sturen, moet u een SMTP-server geconfigureerd., Dat is waar SSMTP echt goed presteert: je hoeft alleen maar het configuratiebestand één keer te bewerken, en je bent klaar om te gaan.

Stap 4. Ssmtp

laten we het configuratiebestand opzoeken op /etc/ssmtp/ssmtp.conf. Hier zou u de onderstaande code moeten gebruiken om een SMTP relay in te stellen:

Dit betekent dat u een externe service instelt die
uw e-mails doorstuurt. Wanneer u bijvoorbeeld referenties aan Gmail verstrekt, ziet u de berichten die vanuit de terminal zijn verzonden in de map ‘Verzonden mail’ van uw mailbox. De configuraties lijken ook op die van andere diensten.,

Dit was de basisconfiguratie voor sendmail en de installatie stappen voor elk vaak gebruikt mailer pakket op de commandoregel. Volgende, We zullen springen op het installeren en het uitproberen van diverse andere pakketten.

e-mail versturen met behulp van het SSMTP Commando

Dit is een leuk klein hulpmiddel dat we zojuist hebben geconfigureerd voor e-mailaflevering. Zoals de pagina man suggereert, is het een minimalistische emulator van sendmail. Als zodanig stelt SSMTP gebruikers in staat om e-mails over te dragen via een SMTP server vanaf de Linux command line., Het biedt de middelen om verbinding te maken met een mailhub met een juiste configuratie bestand. Als uw configuratiebestand goed is ingesteld, kunnen al uw zorgen met betrekking tot het verzenden van e-mail op de opdrachtregel verdwijnen.

basisimplementatie van het sstmp-Commando:

Als u alleen SSMTP gebruikt, moet het commando er als volgt uitzien:

 ssmtp [email protected] < mail.txt

na het ssmtp commando, moet u het adres van de ontvanger opgeven, dan kunt u een bestand toevoegen dat in de hoofdtekst van de e-mail wordt weergegeven. Hier kunt u headers voor het bericht definiëren, een lijst maken met andere ontvangers en het Inhoudstype Instellen., Op deze manier kunt u HTML e-mails verzenden. SSMTP zal uw bericht interpreteren en de opgegeven waarden correct gebruiken. Hier is een voorbeeld van een HTML die je zou kunnen verzenden:

je kunt echt geen andere opties geven met SSMTP omdat ze niet gerespecteerd worden door het minimalistische ontwerp.

probleemoplossing:

in het geval u de volgende fout op de opdrachtregel tegenkomt:

dat is waarschijnlijk omdat Gmail SSMTP niet als een veilige toepassing behandelt. Om van deze fout af te komen, moet u de instellingen in uw Gmail – account wijzigen-U kunt daar ook meer informatie over potentiële risico ‘ s opzoeken.,

e-mail versturen met het Sendmail Commando

al geruime tijd is sendmail de klassieke mail transfer agent uit de wereld van UNIX. Het werd voor het eerst geà ntroduceerd in 1979 en zijn zeer configureerbare aard en schaalbaarheid maakte het de standaard go-to voor serverbeheerders.,

we hebben al gezien hoe eenvoudige e-mails te verzenden met het ssmtp commando, dus laten we het verschil bekijken met sendmail:

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

Ik heb het -v argument toegevoegd, dat de communicatie tussen de mailserver en uw Mail Transfer Agent zichtbaar.

Er zijn veel configuraties die je kunt gebruiken als je je eigen mailserver opzet en er sendmail op implementeert. Dat valt echter buiten het toepassingsgebied van dit artikel. We zullen terugkeren naar het onderwerp in een volgende. Blijf kijken.,

e-mail versturen met CURL Commando

Dit hulpmiddel is ook enorm gebruikelijk voor gegevensoverdracht vanaf een server. Het ondersteunt vele protocollen, zoals HTTP, FTP, POP3 of SMTP. De CURL pakket wordt op grote schaal gebruikt over de hele wereld, een belangrijke reden is dat het native PHP implementatie en PHP was de standaard server-side scripttaal voor een lange tijd.

installatie:

Controleer of het pakket al geïnstalleerd is., Als u het volgende niet uitvoert:

 sudo apt install curl

wanneer u klaar bent, kunt u toegang krijgen tot het spiekbriefje voor de beschikbare opties voor CURL door curl -huit te voeren. De meer gedetailleerde versie is toegankelijk met man curl of curl --manual. Als u wilt krijgen diepgaande kennis met behulp van Krul, is er dit handige Ebook dat alles wat je ooit zou willen weten bevat.

basisimplementatie voor e-mail verzenden met Krul:

om een e-mail met krul te verzenden, moet u SMTP-verbinding instellen., Meestal worden de uitgaande mailservers van Google of Yahoo gebruikt voor het testen van e-mail verzenden met SMTP. Houd er rekening mee dat u toegang moet inschakelen voor minder veilige apps in Gmail-instellingen en soortgelijke extra beveiligingsinstellingen kunnen ook van toepassing zijn op Yahoo.

in het terminalcommando-fragment hierboven definiëren de parameters --url en --user de SMTP-verbindingsinstellingen. De wachtwoordsectie voor --user parameter is het wachtwoord van uw account voor het opgegeven e-mailadres. Uiteraard kunt u ook gebruik maken van cloud e-mail service providers., Ik zal dat laten zien met Mailgun in de volgende sectie.

geavanceerde implementatie voor e-mail verzenden met CURL:

werken met e-mailbezorgingsplatforms, moet u eerst een API-sleutel verkrijgen. In deze tutorial, Ik zal zien CURL e-mail verzenden voorbeeld met behulp van Mailgun, dus als je vast komen te zitten tijdens het registratieproces volg deze setup guide om op het juiste spoor.

de syntaxis is vrij eenvoudig. Het is je misschien al eerder opgevallen, maar je moet elke regel van het commando beëindigen met \ karakters., Dit is een lijn voortzetting karakter, het commando kan worden uitgevoerd zonder ze allemaal in een regel ook. Het andere ding om te onthouden is de -F optie. Een uittreksel uit de man page:

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

zoals ik al eerder heb aangemoedigd, is het een goede gewoonte om in de handleidingen te duiken bij het gebruik van deze command line mailer commando ‘ s. Zoals de CURL handleiding zegt, in principe maak je een formulier om te verzenden. Elke regel is een regel die wordt gegeven als een paar. Wanneer u bestanden toevoegt vanaf uw lokale machine, hebt u een @ voor de bestandsnaam nodig.,

Dit is hoe de geleverde e-mail eruit zal zien:

u kunt hetzelfde doen met de meeste andere e-mailbezorgplatforms, zoals Sendgrid bijvoorbeeld.

HTML-e-mail verzenden vanaf de commandoregel met CURL:

u kunt dezelfde logica toepassen bij het bouwen van een formulier in een tekstbestand, waarmee u eenvoudig HTML-berichten kunt verzenden:

Als u het eenvoudige commando uit het eerste voorbeeld uitvoert…

probleemoplossing:

mogelijk hebt u de schakelaar --insecure nodig, waarmee CURL “onveilige” SSL-verbindingen en-overdrachten kan uitvoeren., CURL retourneert een foutmelding als de externe server een zelfondertekend certificaat gebruikt, of als het externe servercertificaat niet is ondertekend door een CA die wordt vermeld in het Ca-cert-bestand.

e-mail versturen met Swaks Commando

zoals hun documentatie aangeeft, is Swaks een flexibel, scriptbaar, transactie-georiënteerd SMTP-testprogramma. Het is in staat om SMTP-functies en extensies zoals TLS, authenticatie, en pipelining en meerdere versies van de SMTP-protocollen af te handelen. Het ondersteunt ook meerdere transportmethoden, waaronder UNIX-domein sockets, internet-domein sockets, en leidingen naar voortgebracht processen.,

installatie:

 sudo apt install swaks

basisimplementatie voor e-mail verzenden met Swaks:

om verbinding te maken met een SMTP-account moet u de server opgeven-s, de gebruiker-au, het wachtwoord-ap en het adres-t (waar u uw e-mail wilt verzenden) vlaggen. De-tls vlag is ook belangrijk als u verbinding maakt op poort 587.,

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

de referenties kunnen ook worden verstrekt via opdrachtregelprompt, als u alleen specificeert om te authenticeren -a, niet invullen van de gebruiker en het wachtwoord via opdrachtregelopties.

geavanceerde implementatie voor e-mail verzenden met Swaks:

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

Er zijn andere opties die we nu niet zullen aanraken. Laten we naar ons volgende mailer pakket gaan!

e-mail versturen met de opdracht Mutt

Mutt is anders dan de vorige e-mailclients, omdat het een veelzijdige opdrachtregel-e-mailclient is., Je kunt het gebruiken voor het lezen van e-mails van de Linux terminal, het verbinden met lokale gebruikers mailboxen of POP/IMAP servers. Mutt ondersteunt verschillende mailbox formaten zoals mbox, MH, maildir, MMDF, volledige controle van bericht headers tijdens E-mail samenstelling, en meerdere bericht tagging en kleuren om berichten te verwerken.

installatie:

 sudo apt install mutt

basisimplementatie voor e-mail verzenden met mutt:

tegen deze tijd zult u niet verrast zijn door de structuur van het commando., U kunt een lege berichttekst opgeven met < /dev/null:

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

geavanceerde implementatie voor het verzenden van e-mail met mutt:

Voor het verzenden van e-mail inclusief bijlagen hebt u de -a vlag nodig. Op deze manier kunt u nuttige bestanden, zoals systeemlogboeken, naar een opgegeven adres sturen.

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

U kunt ook HTML-e-mail versturen als de bestandsextensie die u aan het bericht toevoegt in HTML-formaat is., Mutt herkent het bestandstype en lost het op zodat het uw HTML niet als platte tekst verstuurt:

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

Dit is het voor e-mail verzenden met mutt. Als je het op je computer hebt, stel ik voor om uit te proberen hoe je kunt werken met inkomende configuratie van je mailbox en het afhandelen van inkomende berichten. Als u dit doet, deel dan uw gedachten in het commentaar hieronder. Ik ben blij met elke mening over de pakketten weergegeven in de tutorial.

e-mail versturen met het Mailx Commando

De Mailutils is een samengesteld pakket voor meerdere use cases., Het is ontworpen om reguliere gebruikers, systeembeheerders en ontwikkelaars te bedienen. We zullen alleen ingaan op de basisfuncties met betrekking tot e-mail forwarding. Als u geïnteresseerd bent in meer functies, kijk dan op de man pagina.

installatie:

 sudo apt install mailutils

basisimplementatie voor e-mail verzenden met mailx:

het mailx-pakket heeft 2 gelijke opdrachtsyntaxis (mail en mailx beide werken op exact dezelfde manier)., Het meest simplistische Commando bestaat uit het mail/mailx commando en het adres waar de e-mail naartoe gestuurd moet worden, maar u zou waarschijnlijk het onderwerp en op zijn minst een tekstgebaseerde berichttekst toevoegen. Zo ‘ n opdracht zou er als volgt uit moeten zien:

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

door gebruik te maken van de opdracht echo en door de uitvoer door te sluizen naar de opdracht mail kunt u de extra aanwijzingen van mailx voor Cc-adressen en de berichttekst vermijden.,

geavanceerde implementatie voor e-mail verzenden met mailx:

voor het geavanceerde voorbeeld zullen we opnieuw een volwaardige HTML-e-mail sturen. We moeten het HTML-e-mailbestand van onze keuze voorzien van het < teken en voeg de “append flag” toe met het inhoudstype. De volledige code ziet er als volgt uit:

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

u kunt ook een retouradres instellen met --return-address=<EMAIL-ADDRESS>, wat nuttig kan zijn., Een andere handige optie, die ik niet kon oplossen om te werken met HTML email parallel, is om bijlagen in hetzelfde bericht te leveren: -A "mail.txt". Hoewel u meerdere ontvangers kunt weergeven, kan slechts één bijlage worden bijgevoegd. U kunt externe SMTP-server configureren als dat u bevalt.

het gebruik van Telnet alternatief Openssl Commando

Telnet is een interactief communicatieprotocol voor communicatie met een andere host. Het kan worden gebruikt om een SMTP-verbinding naar een andere server te openen en e-mailberichten over te dragen., Aangezien het protocol echter niet beveiligd is, zullen de meeste servers dit communicatietype weigeren. Dit is waar Openssl komt in het beeld als het is gebouwd met SSL/TLS-beveiliging inbegrepen. Het wordt op dezelfde manier aangeroepen als telnet met een host argument, en het voert een open commando impliciet uit:

Ik heb de invoer ingesprongen die je moet geven terwijl het communicatiekanaal open is. Deze ingangen zijn vanzelfsprekend, maar een ding dat ik moet detail is de wachtwoord hash. Het kan een base64 gecodeerde hash zijn, die je kunt verkrijgen met het volgende commando: echo -en '\[email protected]\000gmailpassword' | base64., De escape karakters uit de string kunnen niet worden weggelaten. Als je het Base64 pakket niet hebt geïnstalleerd, is het beschikbaar via package managers.

zoals u hierboven kunt zien, biedt dit middel van e-mail verzenden alleen een interface voor tekstgebaseerde berichten, daarom heeft het zijn beperking in use cases. Aan de andere kant toont het alle informatie die is uitgewisseld met de mailserver, wat debuggen heel eenvoudig maakt.

e-mailproblemen oplossen

controleer de e-maillogs

u moet uw logbestand vinden door naar de bijbehorende map te navigeren. Ik gebruik liever mijn code editor (bijv., Sublieme tekst) voor dit, zodat ik de logs met syntaxis highlight kan hebben:

$ sudo subl /var/log

afhankelijk van uw huidige Linux distributie moet u mogelijk naar andere bron kijken.
Het logboek kan nuttige informatie bevatten over leverbaarheidsproblemen. Op dit punt, als je naar de onderkant van deze:

scrolt, kun je controleren of de levering succesvol is of begrijpen waarom het proces is mislukt.,
Het kan gebeuren dat uw console geen fouten laat zien, maar in de maillog kunt u zien dat het bericht in de wachtrij stond voor aflevering, dus het proces is niet gestopt op uw machine, maar waarschijnlijk werd het geweigerd door de mailserver die u probeerde te bereiken.

het uitvoeren van alle commando ‘ s in een reeks

dus, alles is klaar voor de laatste test. Alle mailer terminal commando ‘ s worden hier verzameld in een script bestand. Nadat u de werkmap hebt gedownload met het scriptbestand erin, navigeert u naar de map die het bevat en maakt u het script uitvoerbaar: chmod u+x mail.sh., Als u alle bestanden die ik heb verstrekt klaar, kunt u beginnen met het testen van de mailer commando ‘ s getoond in de tutorial. U hoeft alleen maar "<RECIPIENT ADDRESS>" te vervangen door uw test-e-mailadres in de code en ./mail.sh op de opdrachtregel uit te voeren.

zodra het script klaar is met draaien, zal uw inbox gevuld worden met de test e-mails.

goed gedaan!

samenvatting

In dit artikel liet ik u vele manieren zien om e-mail te verzenden vanaf de Linux commandoregel. Hopelijk, op basis van wat je zag, kunt u deze diensten ook zelf installeren en configureren op uw machine.,

De post toonde de meest gebruikte command line mailer pakketten en hoe e-mails met hen te verzenden, en uiteindelijk heb ik een shell script dat alle commando ‘ s gebruikt in het artikel verzamelt. U kunt de projecten werken bestanden hier downloaden, en als u de pakketten geà ntroduceerd in de tutorial te installeren en ook in uw referenties en ontvanger gegevens in te vullen,kunt u het script op uw gemak.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *