Enten du er en utvikler som jobber non-stop i Linux command line eller en server administrator ønsker logger eller andre data hentet fra gis-systemer, å vite hvordan å sende e-post fra kommando-linjen er i stor grad nyttig.
I dette innlegget, finner du eksempler på hvordan du sender e-post fra terminalen. Vi skal se på tilpassede konfigurasjoner og touch på hvordan du setter opp SMTP-tilkoblinger til e-postkontoer eller e-tjenesteleverandører., Jeg vil vise deg hvordan du skal installere de nødvendige konsollen mailer pakker og gi bakgrunn for kommandolinje opsjoner basert på pakken sine håndbøker.
Sette Opp kommandolinjen Mailer Pakker
Alle mailer pakker gjennom hele opplæringen er tilgjengelige via Debian Advanced Package Manager så installasjon i eksempelet nedenfor kan brukes til alle showcased i pakker.,
Vær oppmerksom på at disse delene av programvaren kan installeres av andre standard pakke ledere som yum
eller dnf
avhengig av din Linux-distribusjon.
I de fleste tilfeller, enten sendmail
eller postfix
er tilgjengelig i hver Linux-distribusjon ut-av-det-box eller minst som er hva lignende blogginnlegg si. Enten jeg er uheldig eller den andre var galt, men jeg hadde å installere manuelt. Imidlertid, du definitivt trenger en av dem for e-postlevering.,
Sette Opp Sendmail med SSMTP Pakken
jeg vil fortsette med sendmail
og SSMTP pakken. SSMTP inneholder sendmail
pakken under panseret, som du vil se, og den muliggjør konfigurasjon, som er ganske vanskelig for sendmail
annet.
Trinn 1., Sjekk om kommandolinjen Mailer Pakken er Installert
Skriv inn e-post pakkenavnet akkurat slik du ville kjøre kommandoen, for å sjekke om den er tilgjengelig:
-
Hvis pakken er installert, kjører kommandoen, og foreslå endringer — mens du prøver å utføre kommandoen, — og du vil se en blinkende markør, etterfulgt av meldingen
Recipient names must be specified
i tilfelle avsendmail
. Konklusjon: pakken er installert., -
Hvis pakken IKKE er installert, får du en advarsel, og et forslag for hvordan til å installere den:
I dette eksempelet, jeg prøvde hvis sendmail
– kommandoen fungerer. Etter vi legge til SSMTP pakke, denne kommandoen og ssmtp
– kommandoen vil både arbeid og endre ledeteksten i terminalen. La oss se på det!
Trinn 2., Installere Sendmail kommandolinjen Mailer Pakken
Som terminal utgang foreslått, vi trenger å kjøre Advanced Package Manager installere kommando — vanligvis med roten tillatelse for å installere de nødvendige pakken. Som nevnt før, konfigurasjonene er mye enklere for sendmail
når du abstrakte bort kompleksiteten av konfigurasjonen. Som kan gjøres med SSMTP:
sudo apt install ssmtp
Trinn 3. Kontroller Installasjonen
Etter at installasjonen er fullført, kan du sjekke om sendmail
er i stand til å videresende meldinger., Skriv inn koden nedenfor i terminal:
echo "Subject: hello" | sendmail [email protected]
Det bør sende ut e-post hvis alt fungerer på riktig måte. Her "hello"
string rørledning til sendmail
– kommandoen vil være gjenstand for den sendte meldingen, mens de definerte e-postadressen er naturlig mottaker av e-post.
Du kjører kommandoen… og, oops: sendmail: Cannot open mailhub:25
. Grunnen til dette er at vi ikke gi mailhub innstillinger i det hele tatt. For å videresende meldinger, må du ha en SMTP-serveren er konfigurert., Det er der SSMTP utfører veldig bra: du trenger bare å redigere konfigurasjonsfilen en gang, og du er godt å gå.
Trinn 4. Konfigurere SSMTP
La oss finne alternativer på config-filen på /etc/ssmtp/ssmtp.conf
. Her, bør du sette inn koden nedenfor til å konfigurere SMTP-relay:
Dette betyr at du setter opp en ekstern tjeneste som faktisk fremover
din e-post. Når du oppgi legitimasjon for å Gmail for eksempel, vil du se meldinger som er sendt fra terminalen i postkassen din er Sendt e-post’ katalog. Konfigureringer ligner med andre tjenester også.,
Dette var den grunnleggende konfigurasjon for sendmail
og installasjon for noen ofte brukte kommandolinjen mailer pakken. Neste, vi vil hoppe på installere og prøve ut ulike andre pakker.
Sende E-post ved Hjelp av SSMTP Kommandoen
Dette er et hyggelig lite verktøy som vi bare er konfigurert for levering av e-post. Som sin man
side antyder, det er en minimalistisk emulator av sendmail
. Som sådan, SSMTP tillater brukere å overføre e-post via SMTP-serveren fra en Linux-kommando linje., Det gir mulighet til å koble til en mailhub med en skikkelig konfigurasjonsfilen. Hvis din konfig-fil som ble satt opp, alle dine bekymringer om kommandolinjen sending av e-post kan forsvinne.
Grunnleggende Gjennomføring av SSTMP kommando:
Hvis du bare bruker SSMTP, kommandoen skal se ut som følger:
ssmtp [email protected] < mail.txt
Etter ssmtp
– kommandoen, bør du sette av mottaker-adresse, så du kan inkludere en fil som skal vises i e-postteksten. Her kan du angi topptekst for meldingen, liste videre mottakere og angi at content-type., På denne måten kan du sende HTML e-post. SSMTP vil tolke meldingen din og bruke den angitte verdier på riktig måte. Her er et eksempel på en HTML-du kan sende:
Du kan egentlig ikke gi ytterligere muligheter med SSMTP som de ikke er respektert av sine minimalistisk design.
Feilsøking:
I tilfelle du får en feilmelding om følgende på kommandolinjen:
det er trolig fordi Gmail er ikke å behandle SSMTP som en sikker programmet. For å bli kvitt dette problemet, må du endre innstillingene i din Gmail-konto, kan du søke opp mer informasjon om potensielle risikoer det så godt.,
Sende E-post ved Hjelp av Sendmail-Kommandoen
For en stund nå, sendmail er den klassiske mail transfer agent fra verden av UNIX. Det ble først introdusert i 1979 og sin svært konfigurerbart natur og skalerbarhet gjort det standard go-til for server-administratorer.,
Vi har allerede sett hvordan å sende grunnleggende e-post av ssmtp
– kommandoen, så la oss se forskjellen ved hjelp av sendmail
:
echo "Subject: hello" | sendmail -v [email protected] < mail.txt
jeg kastet i -v
argument, noe som vil gjøre kommunikasjonen mellom serveren og dine mail transfer agent synlig.
Det er mange konfigurasjoner som du kan bruke hvis du setter opp din egen e-post server og implementere sendmail på det. Imidlertid, det er utenfor omfanget av denne artikkelen. Vi vil komme tilbake til temaet i en kommende én. Stay tuned.,
Sende E-post ved Hjelp av KRØLL-Kommandoen
Dette verktøyet er også veldig vanlig for å overføre data fra en server. Det støtter mange protokoller som HTTP, FTP, POP3 eller SMTP. CURL pakken er utbredt over hele verden, er den viktigste grunnen er at det har naturlig PHP implementering og PHP som var standard server-side scripting-språk, for en lang tid.
Installasjon:
Sjekk hvis pakken allerede er installert., Hvis ikke kjøre nedenfor:
sudo apt install curl
Når du er ferdig, kan du få tilgang til jukse ark for tilgjengelige alternativer for KRØLLER seg ved å kjøre curl -h
. Jo mer detaljert versjon er tilgjengelig med enten man curl
eller curl --manual
. Hvis du ønsker å få inngående kunnskap hjelp cURL, det er dette en hendig Bok som inneholder alt du ville ønske å vite.
Grunnleggende gjennomføring for sending av e-post med CURL:
for å sende en e-post med KRØLLET, må du konfigurere SMTP-tilkobling., Oftest Google eller Yahoo for utgående e-post servere som er brukt for å teste sending av e-post med SMTP. Vær oppmerksom på at du må slå på tilgang for mindre sikker apps i Gmail-innstillinger og lignende andre sikkerhetsinnstillinger kan gjelde for Yahoo, så vel.
I terminal kommando tekstutdraget ovenfor, --url
og --user
parametere angi SMTP-tilkobling-innstillinger. Passordet i delen for --user
parameter passord til den oppgitte e-postadressen. Naturligvis, du kan også bruke skybaserte e-tjenesteleverandører., Jeg vil vise at det å bruke Mailgun i følgende avsnitt.
Avansert løsning for sending av e-post med CURL:
du Arbeider med e-postlevering plattformer, må du først få en API-nøkkel. I denne opplæringen vil jeg vise CURL sending av e-post eksempel ved hjelp av Mailgun, så hvis du får problemer under registreringen følger dette oppsettet guide for å komme på rett spor.
syntaksen er ganske grei. Du har kanskje lagt merke til før, men du trenger å avslutte hver linje av kommandoen med \
tegn., Dette er en linje videreføring karakter, kommandoen kan kjøres uten dem alle i én linje, så vel. Den andre tingen å huske er -F
alternativ. Et utdrag fra mannen siden:
-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 jeg oppmuntret før, det er en god praksis å dykke inn i den manualer når du bruker disse kommandolinjen mailer kommandoer. Som CURL manuell sier, i utgangspunktet du oppretter et skjema for å sende. Hver linje er en oppføring som er gitt som en name=content
par. Når du legger ved filer fra din lokale maskin, trenger du en @
foran filnavnet.,
Dette er hvordan levert på e-post vil se slik ut:
Du kan gjøre det samme med de fleste andre e-levering plattformer, som Sendgrid for eksempel.
Sender HTML e-post fra kommandolinjen med CURL:
Du kan bruke den samme logikken med å bygge et skjema i en tekst-fil, som du kan bruke til å sende HTML-meldinger enkelt:
Hvis du kjører den enkle kommandoen fra første eksempel…
Feilsøking:
Du kan trenge --insecure
bryteren, som gjør CURL for å utføre «usikre» SSL-tilkoblinger og overføringer., CURL vil returnere en feilmelding hvis den eksterne serveren ved hjelp av en selv-signert sertifikat, eller hvis sertifikatet til ekstern server er ikke signert av en CA oppført i CA cert-fil.
Sende E-post ved Hjelp av Swaks kommandoen
Som dokumentasjon deres stater, Swaks er en fleksibel, skriptbare, transaksjons-orientert SMTP-test verktøy. Det er i stand til å håndtere SMTP-funksjoner og utvidelser som TLS-godkjenning, og pipelining og flere versjonen av SMTP-protokoller. Den støtter også flere transport metoder, inkludert UNIX-domene stikkontakter, internett-domene stikkontakter, og rør til gytt prosesser.,
Installasjon:
sudo apt install swaks
Grunnleggende gjennomføring for sending av e-post med Swaks:
for å koble til en SMTP-konto du må oppgi server -s
, brukeren -au
, passordet -ap
og adresse -t
(der du ønsker å sende e-post) flagg. -tls
flagget er også viktig hvis du kobler på port 587
.,
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>
legitimasjon kan også gis via kommandolinjen ber, hvis du bare angir å godkjenne -a
, for ikke å fylle ut brukernavn og passord gjennom kommando linje valg.
Avansert løsning for sending av e-post med Swaks:
swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt
Det finnes andre alternativer som vi ikke vil berøre nå. La oss dra til vår neste mailer pakke!
Sende E-post Med Mutt Kommandoen
Mutt er forskjellig fra den forrige e-post klienter, så det er en funksjonsrik kommandolinjen e-postklient., Du kan bruke den for å lese e-post fra Linux terminal, tilkobling til lokal bruker postkasser eller POP/IMAP-servere. Mutt støtter flere postboks formater som mbox, MH, maildir, MMDF, full kontroll av meldingshoder i e-sammensetning, og flere meldingen merking og farger for å håndtere meldinger.
Installasjon:
sudo apt install mutt
Grunnleggende gjennomføring for sending av e-post med mutt:
på denne tiden vil du ikke bli overrasket over strukturen i kommandoen., Du kan gi en tom melding kroppen med < /dev/null
:
# mutt -s "Test Email" [email protected] < /dev/null
Avansert løsning for sending av e-post med mutt:
For å sende e-post som vedlegg, må du ha -a
flagg. På denne måten kan du sende nyttige filer som system-logger, til en angitt adresse.
# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null
Du kan også sende HTML e-post hvis filtypen du vil legge til i meldingen kroppen er i HTML-format., Mutt vil gjenkjenne filtypen og løse det slik at det ikke vil sende HTML som ren tekst:
mutt -s "Email subject" [email protected] < email.html
Dette er det for sending av e-post med mutt. Hvis du har det på din maskin, vil jeg foreslå å prøve ut hvordan du kan jobbe med innkommende konfigurere postkassen og håndtering av innkommende meldinger. Hvis du gjør det, kan du dele dine tanker i kommentarfeltet nedenfor. Velkommen jeg noen mening om pakkene vist i opplæringen.
Sende E-post ved Hjelp av Mailx Kommandoen
Mailutils er en sammensatt pakke for flere tilfeller., Det er designet for å tjene vanlige brukere, system-administratorer og utviklere. Vi vil bare trykk på de grunnleggende funksjonene vedrørende videresending av e-post. Hvis du er interessert i flere funksjoner, sjekk ut sin man
side.
Installasjon:
sudo apt install mailutils
Grunnleggende gjennomføring for sending av e-post med mailx:
mailx pakken har 2 like kommandosyntaksen (mail
og mailx
begge fungerer på nøyaktig samme måte)., Den enkleste kommandoen består av mail/mailx
– kommandoen og-postadresse for å sende e-post til, men du vil trolig inkludere temaet, og minst en tekst-basert meldingsteksten. En slik kommando bør se ut som dette:
echo "message body" | mail -s "subject" [email protected]
Ved hjelp av echo
kommando og rør den ut til mail
– kommandoen, kan du unngå mailx flere ber for Cc-adresser og meldingsteksten.,
Avansert løsning for sending av e-post med mailx:
For mer avansert eksempel, vil vi sende en fullverdig HTML-e-post igjen. Vi trenger å oppgi e-HTML-fil av våre valg med <
tegn og legg til «legg flag» med content-type. Full koden ser ut som følger:
mailx -a 'Content-Type: text/html' -s "This is advanced mailx indeed!" < email.html "[email protected], [email protected]"
Du kan også angi en returadresse med --return-address=<EMAIL-ADDRESS>
, som kan være nyttig., En annen nyttig alternativ, som jeg ikke kunne løse for å jobbe med HTML-e-post parallelt, er å gi vedlegg i samme melding: -A "mail.txt"
. Selv om du kan liste opp flere mottakere, bare et enkelt vedlegg kan være festet. Du kan konfigurere eksterne SMTP-server hvis tanker som deg.
ved å Bruke Telnet, Alternativ Openssl-Kommandoen
Dette er en interaktiv kommunikasjon protokoll for kommunikasjon med en annen vert. Det kan brukes til å åpne en SMTP-tilkobling til en annen server og overføre e-postmeldinger., Men, som protokoll er ikke sikret, de fleste servere vil avvise denne typen kommunikasjon. Dette er hvor Openssl kommer inn i bildet som det er bygget med SSL/TLS-sikkerhet inkludert. Den startes på samme måte som en telnet-med en vert argument, og den utfører en åpne-kommandoen implisitt:
jeg rykket inn inngangene du trenger å gi, mens kommunikasjonskanal er åpne. Disse inngangene er selvforklarende, men en ting jeg må detalj er passord-hash. Det kan være en base64-kodet hash-kode, som du kan få med følgende kommando: echo -en '\[email protected]\000gmailpassword' | base64
., Escape-tegn fra strengen kan ikke utelates. Hvis du ikke har base64-pakken installert, det er tilgjengelig gjennom pakke ledere.
Som du kan se ovenfor, betyr dette for sending av e-post bare gir et grensesnitt for tekst-baserte meldinger, derfor det har sin begrensning i bruk saker. På den annen side, det viser all informasjon som utveksles med epost-server, som gjør debugging veldig enkelt.
Feilsøking e-Post Problemer
merk av for e-post logger
Du trenger for å finne din loggfilen ved å navigere til den tilsvarende mappen. Jeg foretrekker å bruke min kode editor (f.eks., Sublime Text) for dette slik at jeg kan ha loggene med syntaks høydepunkt:
$ sudo subl /var/log
Avhengig av din nåværende Linux-distribusjon du kan få behov for å se på ulike kilder.
logg og kan inneholde nyttig informasjon om deliverability problemer. På dette punktet, når du blar til bunnen av dette:
du kan undersøke om leveransen er vellykket eller forstå hvorfor prosessen mislyktes.,
Det kan skje at din konsoll viser ingen feil, men i e-post-logg kan du se at meldingen var kø for levering, slik at prosessen ikke stopper opp på din maskin, men trolig ble avslått av epost-serveren du prøver å nå.
Kjører Hele Kommandoen i en Sekvens
Så, alt er klart for den siste testen. Alle mailer terminal-kommandoer som er samlet her i en script-fil. Når du har lastet ned de arbeider mappe med script-fil i det, kan du navigere til mappen som inneholder og gjøre scriptet kjørbart: chmod u+x mail.sh
., Hvis du har alle filene jeg gitt klar, kan du begynne å teste mailer kommandoer som vises i opplæringen. Du trenger bare å erstatte "<RECIPIENT ADDRESS>"
til prøven din e-postadresse i feltet kode, og kjør ./mail.sh
på kommandolinjen.
Når skriptet er ferdig kjører, din innboks vil bli fylt med test-e-post.
Vel gjort!
Oppsummering
I denne artikkelen, jeg viste deg mange måter å sende e-post fra Linux kommandolinje. Forhåpentligvis, basert på hva du så, kan du installere og konfigurere disse tjenestene på maskinen selv.,
stillingen som viste de mest brukte kommandolinjen mailer pakker og hvordan å sende e-post med dem, og til slutt, jeg opprettet en shell-script som samler alle kommandoene som brukes i artikkelen. Du kan laste ned de prosjekter som arbeider filer her, og hvis du installerer pakkene innført i opplæringen og også fylle i din legitimasjon og mottaker detaljer, kan du kjøre skriptet på ferie.