autor dobrovolně přispěl tímto tutoriálem jako součást programu Pepipost Write to Contribute.
Úvod
oznámení jsou v těchto dnech stále důležitější, aby zůstala aktualizována mezi různými online aktivitami. Tato oznámení mohou být navíc e-maily, SMS nebo push. Tento tutoriál vám ukáže nejjednodušší způsob odesílání oznámení přes jeden z nejpopulárnějších kanálů, kterým je e-mail. Naučíte se proces odesílání e-mailů z terminálu nebo skriptu shellu z operačního systému Linux pomocí některých populárních nástrojů CLI.
tento tutoriál vám pomůže při odesílání kritických e-mailů na úrovni serveru, jako jsou zprávy Cron, protokoly skriptů, registrace zákazníků, potvrzení, bankovní výpis přes e-mail. Existuje mnoho způsobů, jak odesílat e-maily ze serveru, ale pojďme prozkoumat nástroj, který se snadno instaluje a snadno kóduje.
s jednoduchými knihovnami a malými konfiguracemi můžete mít v operačním systému Linux nástroj CLI, který můžete použít k odesílání e-mailů z terminálu.
předpoklady
- operační systém Linux
- konfigurace SMTP (podrobnosti o serveru SMTP a přihlašovací údaje)
- váš oblíbený editor (Volitelné)
- nakonfigurujte Gmail SMTP / ready s jakýmikoli dalšími podrobnostmi SMTP serveru. V tomto tutoriálu budete používat Gmail SMTP k odesílání e-mailů, takže se ujistěte, že;
undefinedundefined
konfigurace serveru Google SMTP by vypadaly asi takto:
- SMTP Server/název hostitele: smtp.gmail.com
- SMTP uživatelské jméno:
- SMTP heslo:
- SMTP Port: 587
- TLS/SSL: povinné
je čas otevřít terminál
existují různé nástroje a knihovny, které můžete nainstalovat pro odesílání e-mailů z terminálu. Několik populárních knihoven je:
- Ssmtp
- Mailx
v tomto tutoriálu se dozvíte kroky, jak nainstalovat a používat ssmtp k odesílání e-mailů z příkazového řádku systému Linux. Klikněte zde, pokud se chcete dozvědět, jak nainstalovat a používat Mailx k odesílání e-mailů z příkazového řádku systému Linux.
jak nainstalovat sSMTP Chcete-li odesílat e-maily z příkazového řádku systému Linux (CLI)
Krok 1
použijte níže uvedený příkaz k instalaci ssmtp:
sudo apt-get install ssmtp
Volitelné:
Uživatelé CentOS mohou použít níže uvedený příkaz k instalaci ssmtp:
sudo yum install ssmtp
v CentOSu se může během instalace zobrazit chyba, protože „balíček ssmtp není k dispozici“, v takovém případě níže uvedený příkaz bude užitečný k vyřešení problému:
sudo yum --enablerepo=extras install epel-release
Krok 2
po úspěšné instalaci ssmtp musíte provést níže uvedené globální konfigurace, které jsou vyžadovány pro odesílání pošty.
otevřete následující soubor ve svém oblíbeném editoru:
sudo vim /etc/ssmtp/ssmtp.conf
upravte výše uvedený soubor s níže uvedenými podrobnostmi:
mailhub=smtp.gmail.com:587useSTARTTLS=YESAuthUser=username-hereAuthPass=password-hereTLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
výše uvedená konfigurace bude použita k odesílání e-mailů pomocí SMTP služby Gmail. V případě, že chcete použít nějaký jiný SMTP třetích stran, uveďte jeho název hostitele. například pokud chcete použít Pepipost SMTP, pak místo smtp.gmail.com, je třeba zmínit smtp.pepipost.com v parametru mailhub. mailhub se používá pro adresu SMTP serveru, který se skládá ze dvou částí hostitele: port
Nyní jste všichni nastaveni na odesílání e-mailů z příkazového řádku (CLI).
Krok 3
existuje několik způsobů, jak použít příkaz ssmtp k odesílání e-mailů.
případ 1: Odeslat poštu přímo z příkazového řádku
za tímto účelem zkopírujte níže uvedený příkaz a jste připraveni odeslat e-mail z příkazového řádku:
echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv
-VVV je upovídanost vidět protokoly při odesílání pošty
Případ 2: odeslat poštu ze skriptu shellu
můžete použít stejný ssmtp k odesílání pošty ze skriptu shellu. Za tímto účelem otevřete preferovaný editor a vytvořte soubor skriptu shellu s názvem saymail.Shand kopírovat-vložit níže uvedený kód:
#!/bin/sh SUBJECT="Test Subject"TO=""MESSAGE="Hey There! This is a test mail"echo $MESSAGE | sudo ssmtp -vvv $TO
ujistěte se, že jste nastavili správné oprávnění Přístup k souboru skriptu. Pokud ne, Zde je příkaz k nastavení oprávnění:
$ sudo chmod 755 mail.sh
nyní je Kód připraven k provedení. Stačí spustit skript shellu pomocí níže uvedeného příkazu:
$ sudo ./mail.sh
doufám, že nyní budete moci odesílat e-maily také pomocí skriptu shell.
níže je několik chyb / výjimek, se kterými se můžete setkat při odesílání pošty pomocí ssmtp:
chyba 1
v případě, že při odesílání e-mailu, pokud by se mohla dostat Níže uvedená chyba jako výstup:
Ssmtp: autorizace selhala (535 5.7.8 https://support.google.com/mail/?p=BadCredentials u65smyez14952a76922r5pfui.104-gsmtp)
220 smtp.gmail.com ESMTP u65sm14952769pfu.104 - gsmtp EHLO kali 250 SMTPUTF8 STARTTLS 220 2.0.0 Ready to start TLS EHLO kali 250 SMTPUTF8 AUTH LOGIN 334 VXNlcm5edhbAWU6 dmlzaGFsY2hhasd2dWhhbjIyMTJAZ21haWwuY29t 334 EUEeGFzc3dvfcaqQ6 535 5.7.8 https://support.google.com/mail/?p=BadCredentials u65smyez14952a76922r5pfui.104 - gsmtpssmtp: Authorization failed (535 5.7.8 https://support.google.com/mail/?p=BadCredentials u65smyez14952a76922r5pfui.104 - gsmtp):~/Documents/Scripts$
řešení: V takovém případě zkuste provést následující řešení:
- povolte „povolit méně bezpečnou aplikaci“ v nastavení účtů google, jak je vysvětleno ve výše uvedené části předpokladů.
- zadané přihlašovací údaje mohou být neplatné. Ujistěte se, že máte správná pověření.
jakmile je problém vyřešen, znovu spusťte skript shellu a výstup úspěchu bude něco takového;
$ sudo ./mail.sh
výstup:
220 smtp.gmail.com ESMTP h8sm1096aae22880pfo.64 - gsmtp EHLO kali 250 SMTPUTF8 STARTTLS 220 2.0.0 Ready to start TLS EHLO kali 250 SMTPUTF8 AUTH LOGIN 334 VXNlcm5edhbAWU6 dmlzaGFsY2hhasd2dWhhbjIyMTJAZ21haWwuY29t 334 UGFzqc3dmvcmQ36 235 2.7.0 Accepted MAIL FROM:<> 250 2.1.0 OK h8smqer10962480pfo.64 - gsmtp RCPT TO:<> 250 2.1.5 OK h8smqer10962480pfo.64 - gsmtp DATA 354 Go ahead h8sm10962880pfo.64 - gsmtp Received: by kali (sSMTP sendmail emulation); Thu, 19 Sep 2019 21:45:14 +0530 From: "root" <> Date: Thu, 19 Sep 2019 21:45:14 +0530 Hey There! This is a test mail . 250 2.0.0 OK 1568909725 h8smqer10962480pfo.64 - gsmtp QUIT 221 2.0.0 closing connection h8smqer10962480pfo.64 - gsmtp