författaren valde Free and Open Source Fund för att få en donation som en del av Skriv för donationer programmet.

introduktion

Postfix är ett mail transfer agent (mta), ett program som används för att skicka och ta emot e-post. Den kan konfigureras så att den endast kan användas för att skicka e-post via lokal applikation., Detta är användbart i situationer när du behöver regelbundet skicka e-postmeddelanden från dina appar eller helt enkelt ha en hel del utgående trafik som en tredje part e-postleverantör inte tillåter. Det är också ett lättare alternativ till att köra en fullblåst SMTP-server, samtidigt som du behåller den nödvändiga funktionaliteten.

i den här handledningen installerar och konfigurerar du Postfix som en SMTP-server som endast skickas. Du kommer också att begära gratis TLS-certifikat från Låt oss kryptera för din domän och kryptera utgående e-postmeddelanden med dem.

förutsättningar

  • en Ubuntu 18.,04 server konfigureras med den ursprungliga serverinstallationen med Ubuntu 18.04, inklusive att skapa en sudo icke-root-användare.
  • ett fullständigt registrerat domännamn. Denna handledning kommer att använda your_domain hela. Du kan köpa ett domännamn på Namecheap, få en gratis på Freenom, eller använda domänregistratorn som du väljer.
  • en DNS-post medyour_domain som pekar på serverns offentliga IP-adress. Du kan följa denna introduktion till DigitalOcean DNS för information om hur du lägger till dem.,

Obs! serverns värdnamn och Droplets namn måste matchayour_domain, eftersom DigitalOcean automatiskt ställer in PTR-poster för Droplets IP-adress enligt dess namn.

Du kan verifiera serverns värdnamn genom att skrivahostname vid kommandotolken. Utgången ska matcha namnet du gav droppen när den skapades.

Steg 1 — Installera Postfix

i det här steget installerar du Postfix., Det snabbaste sättet är att installera paketetmailutils, som buntar Postfix med några kompletterande program som du använder för att testa att skicka e-post.

uppdatera först paketdatabasen:

  • sudo apt update

Installera sedan Postfix genom att köra följande kommando:

  • sudo apt install mailutils

nära slutet av installationsprocessen kommer du att presenteras med Postfix-konfigurationsfönstret:

konfigurationsfönstret för Postfix:

standardalternativet är Internet Site., Det är det rekommenderade alternativet för ditt användningsfall, så tryck på TAB och sedan ENTER. Om du bara ser beskrivningstexten trycker du på TAB för att välja OK och ENTER.,

om det inte visas automatiskt, kör följande kommando för att starta det:

  • sudo dpkg-reconfigure postfix

efter det får du en annan konfigurationsprompt om systempostnamnet:

systempostnamnet måste vara samma som namnet du tilldelade till din server när du skapade det. När du är klar trycker du på TAB, följt av ENTER.

Du har nu installerat Postfix och är redo att börja konfigurera den.,

steg 2-konfigurera Postfix

i det här steget konfigurerar du Postfix för att skicka och ta emot e-post endast från servern som den körs på—det vill säga från localhost.

För att det ska hända måste Postfix konfigureras för att bara lyssna på loopback-gränssnittet, det virtuella nätverksgränssnittet som servern använder för att kommunicera internt. För att göra ändringarna måste du redigera den huvudsakliga konfigurationsfilen för Postfix som heter main.cf, lagrad underetc/postfix.,

öppna den för redigering med din favorittextredigerare:

  • sudo nano /etc/postfix/main.cf

hitta följande rader:

/etc/postfix/main.cf
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = all. . .

Ställ in värdet för inet_interfaces inställningen till loopback-only

/etc/postfix/main.CF
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = loopback-only. . .

ett annat direktiv som du måste ändra är mydestination, som används för att ange listan över domäner som levereras via local_transport postleveranstransport., Som standard liknar värdena följande:

/etc/postfix/main.cf
. . .mydestination = $myhostname, your_domain, localhost.com, , localhost. . .

ändra raden så här:

/etc/postfix/main.cf
. . .mydestination = localhost.$mydomain, localhost, $myhostname. . .

om din domän faktiskt är en underdomän, och du vill att e-postmeddelandena ska se ut som om de skickades från huvuddomänen, och du vill att de ska se ut som du kan lägga till följande rad i slutet av main.cf:

/etc/postfix/main.,cf
...masquerade_domains = your_main_domain

inställningen masquerade_domains anger för vilka domäner deldomänen kommer att tas bort i e-postadressen.

När du är klar, spara och stäng filen.

Obs! Om du är värd för flera domäner på en enda server kan de andra domänerna också skickas till Postfix med mydestination – direktivet.

starta sedan om Postfix genom att köra följande kommando:

  • sudo systemctl restart postfix

Du har konfigurerat Postfix för att bara skicka e-post från din server., Du testar det nu genom att skicka ett exempelmeddelande till en e-postadress.

steg 3 — Testa SMTP-servern

i det här steget testar du om Postfix kan skicka e-post till ett externt e-postkonto med kommandotmail, som ingår i paketetmailutils som du installerade i det första steget.

för att skicka ett testmeddelande, kör följande kommando:

  • echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

Du kan ändra kroppen och ämnet för e-postmeddelandet efter eget tycke., Kom ihåg att ersätta your_email_address med en giltig e-postadress som du kan komma åt.

Kontrollera nu den e-postadress som du skickade det här meddelandet till. Du bör se meddelandet i din inkorg. Om det inte finns där, kontrollera din skräppostmapp. Vid denna tidpunkt är alla e-postmeddelanden du skickar okrypterade, vilket gör tjänsteleverantörer tror att det är sannolikt spam. Du ställer in kryptering senare, i steg 5.,

om du får ett fel från kommandot mail, eller om du inte har fått ett meddelande efter längre tid, kontrollera att Postfix-konfigurationen du redigerade är giltig och att serverns namn och värdnamn är inställda på domänen.

Observera att med denna konfiguration kommer adressen i fältetFrom för testmeddelandena du skickar att vara i form av your_user_name@your_domain, där your_user_name är användarnamnet för den serveranvändare du körde kommandot som.,

Du har nu skickat ett e-postmeddelande från din server och verifierat att det har tagits emot. I nästa steg konfigurerar du vidarebefordran av e-post för root.

steg 4 — vidarebefordran av Systempost

i det här steget konfigurerar du vidarebefordran av e-post för användareroot, så att systemgenererade meddelanden som skickas till den på din server vidarebefordras till en extern e-postadress.

filen/etc/aliases innehåller en lista med alternativa namn för e-postmottagare., Öppna den för redigering:

  • sudo nano /etc/aliases

i standardläget ser det ut så här:

/etc/Alias
# See man 5 aliases for formatpostmaster: root

i det enda direktivet anges att systemgenererade e-postmeddelanden skickas tillroot.

Lägg till följande rad i slutet av filen:

/etc/aliases
...root: your_email_address

med den här raden anger du att e-postmeddelanden som skickas tillroot hamnar vidarebefordras till en e-postadress. Kom ihåg att ersättayour_email_address med din personliga e-postadress., När du är klar, spara och stäng filen.

för att ändringen ska träda i kraft, kör följande kommando:

  • sudo newaliases

körnewaliases kommer att bygga upp en databas med alias som kommandotmail använder, som tas från konfigurationsfilen du just redigerat.

Testa att skicka e-post tillroot fungerar genom att köra:

  • echo "This is the body of the email" | mail -s "This is the subject line" root

Du bör få e-postmeddelandet på din e-postadress. Om det inte finns där, kontrollera din skräppostmapp.,

i det här steget har du konfigurerat vidarebefordran av systemgenererade meddelanden till din e-postadress. Du aktiverar nu meddelandekryptering, så att alla e-postmeddelanden som din server skickar är immuna mot manipulering i transit och kommer att ses som mer legitima.

Steg 5 — Aktivera SMTP-Kryptering

Du kommer nu att aktivera SMTP-kryptering genom att begära en gratis TLS-certifikat från Låt oss Kryptera för din domän (med hjälp Certbot) och konfigurera Postfix för att använda den när du sänder meddelanden.

Ubuntu innehåller Certbot i sitt standardpaket, men det kan hända att det är föråldrat., Istället lägger du till det officiella arkivet genom att köra följande kommando:

  • sudo add-apt-repository ppa:certbot/certbot

Tryck på ENTER när du uppmanas att acceptera. Uppdatera sedan serverns cache för pakethanteraren:

  • sudo apt update

slutligen installera den senaste versionen av Certbot:

  • sudo apt install certbot -y

som en del av den ursprungliga serverns inställning i förutsättningarna installerade du ufw, den okomplicerade brandväggen. Du måste konfigurera den för att tillåta HTTP-porten 80, så att domänverifieringen kan slutföras., Kör följande kommando för att aktivera det:

  • sudo ufw allow 80

utgången kommer att se ut så här:

Output
Rule addedRule added (v6)

nu när porten är öppen, kör Certbot för att få ett certifikat:

  • sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain

det här kommandot beställer Certbot för att utfärda certifikat med en RSA-nyckelstorlek på 4096 bitar, för att köra en tillfällig fristående webbserver (--standalone) för verifiering och för att kontrollera via port 80 (--preferred-challenges http)., Kom ihåg att ersättayour_domain med din domän innan du kör kommandot och ange din e-postadress när du uppmanas.

utdata kommer att likna detta:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.logPlugins selected: Authenticator standalone, Installer NoneObtaining a new certificatePerforming the following challenges:http-01 challenge for `your_domain`Waiting for verification...Cleaning up challengesIMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

som skrivet i noterna sparades ditt certifikat och din privata nyckelfil under /etc/letsencrypt/live/your_domain.

nu när du har ditt certifikat, öppnamain.cf för redigering:

  • sudo nano /etc/postfix/main.cf

hitta följande avsnitt:

/etc/postfix / main.,cf

ändra det så här, ersätt your_domain med din domän där det behövs, vilket kommer att uppdatera dina TLS-inställningar för Postfix:

/ etc / postfix / main. cf

När du är klar, spara och stäng filen.

använd ändringarna genom att starta om Postfix:

  • sudo systemctl restart postfix

försök nu skicka ett e-postmeddelande igen:

  • echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address

kontrollera sedan den e-postadress du angav. Det är möjligt att du ser meddelandet i inkorgen omedelbart, eftersom e-postleverantörer är mycket mer benägna att markera okrypterade meddelanden som spam.,

Du kan kontrollera den tekniska informationen om e-postmeddelandet i din klient för att se att meddelandet verkligen är krypterat.

slutsats

Du har nu en e-postserver som endast skickas, som drivs av Postfix. Kryptera alla utgående meddelanden är ett bra första steg till e-postleverantörer som inte markerar dina meddelanden som skräppost direkt. Om du gör detta i ett utvecklingsscenario, bör denna åtgärd vara tillräcklig.,

Om ditt användningsfall är att skicka e-post till potentiella webbplatsanvändare (t.ex. bekräftelsemail för en registrering av ett anslagstavla), bör du undersöka hur du konfigurerar SPF-poster, så att serverns e-post är ännu mer sannolikt att ses som legitim.

Articles

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *