Odesílání pošty přes servery SMTP
Výchozí příkaz mail na terminálu Linux používá k odesílání e-mailů místní server smtp (mta) na portu 25. Někdy však musíte určit externí smtp server, který se má používat pro odesílání e-mailů.
Například jste právě nastavili smtp server, jako je Postfix nebo Exim, pak byste jej chtěli vyzkoušet, abyste zjistili, zda přijímá a předává e-maily správně nebo ne.
Možnost posílat e-maily z příkazového řádku pomocí tohoto externího smtp serveru je rychlá, spíše než muset nastavovat poštovního klienta, jako je Thunderbird, na místním počítači.
Existují 2 nástroje příkazového řádku zvané mailx a swaks, které lze použít k odesílání e-mailů pomocí externího smtp serveru. Ty jsou docela užitečné, když potřebujete posílat e-maily z bash skriptu automatizovaným způsobem.
1. příkaz mailx
Příkaz mailx je dostupný z mnoha různých balíčků, jako je mailutils, heirloom-mailx atd. Nejprve musíte pomocí příkazu aptitude vyhledat balíček mailx dostupný pro váš systém. Zde je příklad
$ aptitude search mailx p bsd-mailx - simple mail user agent p bsd-mailx:i386 - simple mail user agent v mailx - v mailx:i386
Chcete-li zjistit, který příkaz mailx váš systém používá, spusťte příkaz readlink. Zde je ukázkový výstup.
$ readlink -f /usr/bin/mailx /usr/bin/bsd-mailx $ readlink -f /usr/bin/mailx /usr/bin/mail.mailutils
Ne všechny varianty mailx mohou k odesílání pošty používat externí smtp servery. Dokáže to pouze ten, který pochází z balíčku s-nail (vytažený heirloom-mailx).
Budeme používat heirloom-mailx, protože umožňuje zadat podrobnosti o připojení smtp v jediném příkazu a rychle odeslat a odeslat e-mail.
$ sudo apt-get install heirloom-mailx
Nyní odešlete e-mail s externím serverem smtp, jako je tento -
echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]
Zde je krok za krokem verze stejného příkazu -
$ echo "This is the message body and contains the message" | mailx -v \ > -r "[email protected]" \ > -s "This is the subject" \ > -S smtp="mail.example.com:587" \ > -S smtp-use-starttls \ > -S smtp-auth=login \ > -S smtp-auth-user="[email protected]" \ > -S smtp-auth-password="abc123" \ > -S ssl-verify=ignore \ > [email protected]
Ujistěte se, že používáte správná nastavení, jako je číslo portu, autentizační mechanismus atd. Příkaz vytvoří podrobný výstup s úplnými podrobnostmi o komunikaci smtp, která probíhá za vámi, což velmi usnadňuje testování a ladění.
Poznámka: Balíček heirloom-mailx byl odstraněn z Ubuntu verze 18 a novější. Nyní musíte nainstalovat balíček s-nail.
$ sudo apt-get install s-nail
Příkaz s-nail je stejný jako příkaz heirloom mailx. Jen ten název je jiný. Spusťte stejný příkaz výše nahrazením mailx za s-nail a mělo by to fungovat.
Pokud používáte nejnovější verzi s-nail (14.9.x), syntaxe pro specifikaci podrobností smtp serveru se může mírně lišit. Podívejte se na nejnovější manuál zde
http://manpages.ubuntu.com/manpages/bionic/en/man1/s-nail.1.html
Podívejte se na předchozí příspěvek o příkazu mailx zde -
9 příkladů příkazů mail/mailx pro odesílání e-mailů z příkazového řádku v systému Linux
2. Příkaz Swaks
Swaks (švýcarský armádní nůž pro SMTP) je jednoduchý nástroj příkazového řádku, který lze použít k testování smtp serverů, aby se zjistilo, zda dělají svou práci správně. Podporuje také TLS.
Nainstalujte swaky na Ubuntu/Debian pomocí následujícího příkazu
$ sudo apt-get install swaks
Nyní odešlete e-mail
$ echo "This is the message body" | swaks --to [email protected] --from "[email protected]" --server mail.example.com --auth LOGIN --auth-user "[email protected]" --auth-password "abc123" -tls
Všechny možnosti jsou docela samozřejmé. Volba "--server" určuje externí SMTP server, který se má použít, "--auth" určuje typ ověřování. Volba "-tls" říká swakům, aby použili STARTTLS.
Další možnosti naleznete na manuálové stránce.