stuur e-mails vanaf de opdrachtregel
de opdracht mail is een essentieel commando dat beschikbaar moet zijn op elke linux server, zodat verschillende diensten en andere webapplicaties e-mails kunnen genereren en verzenden.
In een vorige post op mail Commando zagen we hoe het mail commando gebruikt kan worden om e-mails te versturen vanaf de opdrachtregel op je linux server.,
in deze tutorial zullen we een verbeterde versie van het mail commando gebruiken. Het heet mailx (of gewoon mail wanneer geà nstalleerd), en het kan veel meer dingen doen dan wat de oudere mail commando van gnu mailutils pakket kan doen.
hoe werkt het
het commando mail / mailx heeft een lokale smtp-server (MTA) nodig om de e-mails af te leveren. De route die door de e-mail wordt genomen is ongeveer als volgt –
mail -> sendmail -> local MTA -> recipient MTA
de MTA van de ontvanger zou de smtp-server van gmail zijn als uw ontvanger iemand is op gmail.com bijvoorbeeld., Voor de lokale MTA moet je een smtp server installeren zoals Postfix. Een basisinstallatie van Postfix met minimale configuratie zou in de meeste gevallen werken.
installeer de mailx-opdracht
Op Op Ubuntu / Debian gebaseerde systemen de mailx-opdracht is beschikbaar in 2 verschillende pakketten –
1. erfstuk-mailx
2. bsd-mailx
we zullen het heirloom-mailx pakket gebruiken omdat het meer functies en opties heeft.
op CentOS / Fedora gebaseerde systemen, is er slechts één pakket genaamd “mailx” dat het heirloom pakket is.,
om erachter te komen welk mailx-pakket op uw systeem is geïnstalleerd, vinkt u de uitvoer “man mailx” aan en scroll naar beneden naar het einde en u zou wat nuttige informatie moeten zien.
# ubuntu/debian$ sudo apt-get install heirloom-mailx# fedora/centos$ sudo yum install mailx
met behulp van het mailx Commando
eenmaal geïnstalleerd, kan het mailx commando direct worden verwezen met de naam mail, dus je typt dat gewoon in de commandoregel.
1. Simple mail
voer het volgende commando uit, waarna mailx zou wachten tot u het bericht van de e-mail invoert. U kunt op enter drukken voor nieuwe regels. Wanneer u klaar bent met het typen van het bericht, drukt u op Ctrl + D en mailx zou EOT weergeven.,
Na Dan mailx levert automatisch de e-mail naar de bestemming.
$ mail -s "This is the subject" Hi someoneHow are youI am fineByeEOT
2. Neem bericht uit een bestand
de berichttekst van de e-mail kan ook uit een bestand worden gehaald.
$ mail -s "This is Subject" < /path/to/file
het bericht kan ook worden doorgesluisd met behulp van het echo-Commando –
$ echo "This is message body" | mail -s "This is Subject"
3. Meerdere geadresseerden
om de e-mail naar meerdere geadresseerden te verzenden, geeft u alle e-mails op, gescheiden door een komma
$ echo "Dit is berichttekst" | mail-s "Dit is onderwerp",
4., CC en BCC
De”- c “en” – b ” opties kunnen worden gebruikt om respectievelijk CC en BCC adressen toe te voegen.
$ echo" Dit is berichttekst "| mail-s" Dit is onderwerp " - c
5. Specificeer uit naam en adres
om een “uit” naam en adres op te geven, gebruikt u de optie “-r”. De naam moet worden gevolgd door het adres verpakt in “”.
$ echo" This is message body "| mail-S" This is Subject "- R"Harry<> "
6., Geef” antwoord naar ” adres
het antwoord naar adres wordt ingesteld met de interne optie variabele “replyto” met behulp van de optie “-S”.
7. Bijlagen
bijlagen kunnen worden toegevoegd met de optie “-a”.
$ echo "This is message body"/mail-S "This is Subject" -R "Harry<>" -a/path/to/file
8. Gebruik externe SMTP-server
Dit is een exclusieve functie, die je alleen krijgt met heirloom mailx en niet bsd mailx, of het mail commando van gnu mailutils of het mutt Commando.,
het commando mailx kan een externe smtp-server gebruiken om het bericht door te sturen. De syntaxis is een beetje lang, maar is zinvol.
Hier is een uitsplitsing
U kunt de Gmail smtp-servers gebruiken en e-mails verzenden via uw Gmail-account. Dat is zo cool!
voor gmail moet u in het bijzonder minder veilige apps-instellingen inschakelen voordat u dergelijke e-mail kunt verzenden.
9. Verbose-watch smtp-communicatie
wanneer u externe smtp-servers gebruikt, kunt u ervoor kiezen om de volledige smtp-communicatie op de achtergrond te bekijken., Dit is vooral handig bij het testen of debuggen van smtp-servers.
problemen oplossen
in het geval dat de e-mails niet goed worden afgeleverd, moet u een paar dingen controleren. Het eerste wat je moet controleren is dat een smtp server (mta) lokaal draait. Het netstat commando kan vertellen dat
als een stmp server zoals Postfix draait en er nog steeds geen mails worden verstuurd, probeer dan bijvoorbeeld Postfix opnieuw te configureren. Op Ubuntu / Debian-systemen kan dit worden gedaan met de opdracht dpkg-reconfigure
$ sudo dpkg-reconfigure postfix
probeer dan opnieuw, de mailopdracht en het zou moeten werken., Als dit nog steeds niet het geval is, probeer dan contact op te nemen met uw server provider.
geen e-mails van lokale Systemen
Als u probeert e-mails van uw lokale computer naar een gmail-adres te sturen, wordt uw e-mail waarschijnlijk geweigerd, dus probeer dat niet.
Dit komt omdat gewone computers die verbonden zijn met het internetadres een ip-adres hebben dat niet gekoppeld is aan een geldig domein als zodanig, en Gmail controleert deze referenties strikt voordat een e-mail wordt goedgekeurd om door te gaan.,
Notes and Resources
naast mailx zijn er andere tools zoals Swaks en smtp-cli die kunnen worden gebruikt om e-mails vanaf de opdrachtregel te verzenden en verschillende functies ondersteunen, zoals het specificeren van smtp-servers en het toevoegen van bijlagen enzovoort.
het mailx commando is echter beschikbaar in de standaard repositories van de meest voorkomende distributies, dus kan eenvoudig worden geïnstalleerd. Verder onderhoudt het een syntaxis zeer vergelijkbaar met die van de mail Commando waardoor het een daling in vervanging voor de oudere mail Commando.,
het mailx commando is zelfs in staat om mails van externe IMAP servers te lezen, maar dat is iets wat we buiten deze post hielden en later zouden praten. Voor meer informatie kijk op de man page voor het mailx commando met “man mailx”.