författaren frivilligt bidragit med denna handledning som en del av Pepipost Write to Contribute-programmet.
introduktion
meddelanden blir viktigare idag för att hålla dig uppdaterad bland olika onlineaktiviteter. Dessutom kan dessa meddelanden vara e-post, SMS eller push. Denna handledning kommer att visa dig det enklaste sättet att skicka meddelanden, över en av de mest populära kanalerna som är e-post. Du kommer att lära dig processen att skicka e-post från terminalen eller ett skalskript från ett Linux-operativsystem, med hjälp av några av de populära CLI-verktygen.
denna handledning kommer att hjälpa dig att skicka kritiska e-postmeddelanden på servernivå som Cron-rapporter, skriptloggar, kundregistreringar, kvitto, kontoutdrag via e-post. Det finns många sätt att skicka e-post från servern, men låt oss utforska verktyget som är enkelt att installera och lätt att koda.
med enkla bibliotek och små konfigurationer kan du ha ett CLI-verktyg i ditt Linux-operativsystem som du kan använda för att skicka e-post från terminalen.
förutsättningar
- Linux-operativsystem
- SMTP-konfigurationer (SMTP-serverdetaljer och autentiseringsuppgifter)
- din favoritredigerare (tillval)
- konfigurera Gmail SMTP/ready med alla andra anpassade SMTP-serverdetaljer. I den här handledningen kommer du att använda Gmail SMTP för att skicka e-post, så se till att;
undefinedundefined
Google SMTP-serverkonfigurationer skulle se ut så här:
- SMTP-Server/värdnamn: smtp.gmail.com
- SMTP användarnamn:
- SMTP lösenord:
- SMTP-Port: 587
- TLS/SSL: krävs
det är dags att nu öppna terminal
det finns olika verktyg och bibliotek som du kan installera för att skicka e-post från terminalen. Några av de populära biblioteken är:
- sSMTP
- Mailx
i denna handledning kommer du att lära dig stegen om hur du installerar och använder sSMTP för att skicka e-post från din Linux-kommandorad. Klicka här, om du vill lära dig hur du installerar och använder Mailx för att skicka e-post från din Linux-kommandorad.
så här installerar du ssmtp för att skicka e-post från din Linux-kommandorad (CLI)
Steg 1
använd kommandot nedan för att installera ssmtp:
sudo apt-get install ssmtp
valfritt:
CentOS-användare kan använda kommandot nedan för att installera ssmtp:
sudo yum install ssmtp
i CentOS kan du se ett fel under installationen eftersom ”paket ssmtp inte är tillgängligt”, i ett sådant fall under kommandot, kommer att vara till hjälp för att åtgärda problemet:
sudo yum --enablerepo=extras install epel-release
steg 2
när ssmtp installerats måste du göra nedanstående globala konfigurationer som krävs för att skicka e-post.
öppna följande fil i din favoritredigerare:
sudo vim /etc/ssmtp/ssmtp.conf
redigera ovanstående fil med nedanstående detaljer:
mailhub=smtp.gmail.com:587useSTARTTLS=YESAuthUser=username-hereAuthPass=password-hereTLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
ovanstående konfiguration kommer att användas för att skicka e-post med din Gmail SMTP. Om du vill använda någon annan SMTP från tredje part, nämn sedan värdnamnet för samma. t. ex. om du vill använda Pepipost SMTP, då istället för smtp.gmail.com, du måste nämna smtp.pepipost.com i parametern mailhub. mailhub används för SMTP-serveradress som består av två delar värd:port
nu är du redo att skicka e-post från kommandoraden (CLI).
steg 3
det finns flera sätt att använda ssmtp-kommandot för att skicka e-post.
fall 1: Skicka e-post direkt från kommandoraden
för detta, kopiera och klistra in kommandot nedan, och du är redo att skicka e-post från kommandoraden:
echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv
-vvv är verbosity att se loggarna när du skickar e-post
Case 2: Skicka e-post från ett skalskript
du kan använda samma ssmtp för att skicka e-post från ett skalskript också. För det, öppna din föredragna redigerare och skapa en skalskriptfil med namnet saymail.shand kopiera och klistra in nedanstående kod:
#!/bin/sh SUBJECT="Test Subject"TO=""MESSAGE="Hey There! This is a test mail"echo $MESSAGE | sudo ssmtp -vvv $TO
se till att du har ställt in rätt behörighetsåtkomst till din skriptfil. Om inte, här är kommandot för att ställa in tillståndet:
$ sudo chmod 755 mail.sh
nu är koden redo att köras. Kör bara skalskriptet med kommandot nedan:
$ sudo ./mail.sh
hoppas nu kan du skicka e-post med hjälp av skalskriptet också.
nedan finns några fel/undantag som du kan stöta på när du skickar e-post med ssmtp:
Fel 1
i fallet när du skickar e-post, om kan få nedan fel som utgång:
ssmtp: tillstånd misslyckades (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$
lösning: I ett sådant fall, försök att följa som lösning:
- aktivera ”Tillåt mindre säker app” i dina google-kontoinställningar, som förklaras i avsnittet ovan förutsättningar.
- de angivna inloggningsuppgifterna kan vara ogiltiga. Se till att du har rätt referenser.
när problemet är fixat, kör om skalskriptet och framgångsutmatningen kommer att vara något så här;
$ sudo ./mail.sh
utgång:
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