forfatteren valgte gratis og Open Source-fonden til at modtage en donation som en del af Writerite for DOnations-programmet.
introduktion
Postfi.er en mail transfer agent (MTA), et program, der bruges til at sende og modtage e-mail. Det kan konfigureres, så det kun kan bruges til at sende e-mails med lokal applikation., Dette er nyttigt i situationer, hvor du regelmæssigt skal sende e-mail-meddelelser fra dine apps eller blot have en masse udgående trafik, som en tredjeparts e-mail-tjenesteudbyder ikke tillader. Det er også et lettere alternativ til at køre en fuldblæst SMTP-server, samtidig med at den nødvendige funktionalitet bevares.
i denne vejledning installerer og konfigurerer du Postfi.som en send-only SMTP-server. Du vil også anmode om gratis TLS-certifikater fra Lad os kryptere for dit domæne og kryptere de udgående e-mails ved hjælp af dem.
Forudsætninger
- En Ubuntu 18.,04 server konfigureret med den indledende serveropsætning med Ubuntu 18.04, herunder oprettelse af en sudo-ikke-root-bruger.
- et fuldt registreret domænenavn. Denne vejledning vil bruge
your_domain
hele vejen igennem. Du kan købe et domænenavn på Namecheap, få en gratis på Freenom eller bruge domæneregistratoren efter eget valg. - en DNS-post med
your_domain
, der peger på din servers offentlige IP-adresse. Du kan følge denne introduktion til DigitalOcean DNS for detaljer om, hvordan du tilføjer dem.,
Bemærk: Din serverens værtsnavn, og din Dråbe ‘ s navn skal stemme overens your_domain
, fordi DigitalOcean indstiller automatisk PTR records for Dråben IP-adresse, der i henhold til sit navn.
Du kan bekræfte serverens værtsnavn ved at skrive hostname
ved kommandoprompten. Udgangen skal matche det navn, du gav dråben, da den blev oprettet.
Trin 1 — installation af Postfi.
i dette trin installerer du Postfi.., Den hurtigste måde er at installere mailutils
– pakken, som bundter Postfi.med et par supplerende programmer, som du vil bruge til at teste afsendelse af e-mail.
for det Første, opdatere pakkedatabasen:
- sudo apt update
Så, installere Postfix ved at køre følgende kommando:
- sudo apt install mailutils
i slutningen af installationen, vil du blive præsenteret med Postfix-konfiguration, vindue:
standard indstilling er Internet Site
., Det er den anbefalede indstilling for din brug tilfældet, så tryk på TAB
og derefter ENTER
. Hvis du kun ser beskrivelsesteksten, skal du trykke på TAB
for at vælge OK
, derefter ENTER
.,
Hvis det ikke vises automatisk, skal du køre følgende kommando til at starte den:
- sudo dpkg-reconfigure postfix
Efter at du vil få en anden konfiguration bede om Systemet mail navn:
Det System, mail, navn skal være det samme som det navn, du har tildelt til serveren, når du opretter det. Når du er færdig, skal du trykke på TAB
, efterfulgt af ENTER
.
Du har nu installeret Postfi.og er klar til at begynde at konfigurere det.,
Trin 2 — Konfiguration af Postfix
I dette trin, vil du konfigurere Postfix til at sende og modtage e-mails, kun fra den server, det kører på, der er, fra localhost
.
for at det skal ske, skal Postfi.konfigureres til kun at lytte på loopback-grænsefladen, den virtuelle netværksgrænseflade, som serveren bruger til at kommunikere internt. For at foretage ændringerne skal du redigere den vigtigste postfi. – konfigurationsfil kaldet main.cf
, gemt under etc/postfix
.,
Åbne den til redigering ved hjælp af din foretrukne teksteditor:
- sudo nano /etc/postfix/main.cf
Find følgende linjer:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = all. . .
Angiv værdien af inet_interfaces
indstilling til loopback-only
:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = loopback-only. . .
et Andet direktiv, du bliver nødt til at ændre, er mydestination
, som bruges til at angive en liste over domæner, der er leveret via local_transport
e-mail for levering af transport., Som standard, er de værdier, der svarer til disse:
. . .mydestination = $myhostname, your_domain, localhost.com, , localhost. . .
Ændre linjen til at se ud som dette:
. . .mydestination = localhost.$mydomain, localhost, $myhostname. . .
Hvis dit domæne er faktisk et underdomæne, og du gerne vil e-mail-beskeder til at se ud, som om de er sendt fra den primære domæne, kan du tilføje den følgende linje til slutningen af main.cf
:
...masquerade_domains = your_main_domain
den valgfriemasquerade_domains
indstilling angiver for hvilke domæner underdomænedelen vil blive fjernet i e-mail-adressen.
Når du er færdig, skal du gemme og lukke filen.Bemærk: Hvis du hoster flere domæner på en enkelt server, kan de andre domæner også overføres til Postfi.ved hjælp af mydestination
direktivet.genstart derefter Postfi.ved at køre følgende kommando:
- sudo systemctl restart postfix
Du har konfigureret Postfi. til kun at sende e-mails fra din server., Du vil nu teste det ved at sende et eksempel besked til en e-mail-adresse.
Trin 3 — Test af SMTP-Server
I dette trin, vil du teste, om Postfix kan sende e-mails til en ekstern e-mail-konto ved hjælp af mail
kommando, som er en del af mailutils
pakke, der er installeret i det første trin.
for at sende en test-e-mail skal du køre følgende kommando:
- echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
Du kan ændre e-mailens krop og emne efter din smag., Husk at erstatte your_email_address
med en gyldig e-mail-adresse, som du kan få adgang til.kontroller nu den e-mail-adresse, som du sendte denne meddelelse til. Du skal se meddelelsen i din indbakke. Hvis den ikke er der, skal du tjekke din spam-mappe. På dette tidspunkt er alle e-mails, du sender, ikke krypteret, hvilket får tjenesteudbydere til at tro, at det sandsynligvis er spam. Du vil oprette kryptering senere, i trin 5.,
Hvis du modtager en fejl fra kommandoen mail
, eller du ikke har modtaget en besked efter længere tid, skal du kontrollere, at Postfi. – konfigurationen, du redigerede, er gyldig, og at din servers navn og værtsnavn er indstillet til dit domæne.
Bemærk, at med denne konfiguration, adressen i From
område for test-e-mails, du sender, vil være i form af your_user_name@your_domain
, hvor your_user_name
er navnet på den server bruger du kørte kommando.,
du har nu sendt en e-mail fra din server og bekræftet, at den er modtaget. I det næste trin opretter du videresendelse af e-mail til root
.
Trin 4 — For Systemarding System Mail
i dette trin konfigurerer du videresendelse af e-mail til bruger root
, så systemgenererede meddelelser, der sendes til den på din server, videresendes til en ekstern e-mail-adresse.
/etc/aliases
filen indeholder en liste over alternative navne til e-mail-modtagere., Åbne den til redigering:
- sudo nano /etc/aliases
I sin standard tilstand, det ser ud som dette:
# See man 5 aliases for formatpostmaster: root
Den eneste direktiv nuværende tidspunkt angiver, at systemet genererede e-mails er sendt til root
.
du Tilføje følgende linje til slutningen af filen:
...root: your_email_address
Med denne linje, skal du angive, at e-mails, der sendes til root
ender med at blive sendt til en e-mail-adresse. Husk at erstatte your_email_address
med din personlige e-mailadresse., Når du er færdig, skal du gemme og lukke filen.
For at anvende ændringerne, skal du køre følgende kommando:
- sudo newaliases
Kører newaliases
vil opbygge en database over kaldenavne, at mail
kommando bruger, der er taget fra den config fil, du lige har redigeret.
Test, at afsendelse af e-mails til root
fungerer ved at køre:
- echo "This is the body of the email" | mail -s "This is the subject line" root
Du skal modtage e-mailen på din e-mail-adresse. Hvis den ikke er der, skal du tjekke din spam-mappe.,
i dette trin har du konfigureret videresendelsessystemgenererede meddelelser til din e-mail-adresse. Du aktiverer nu meddelelseskryptering, så alle e-mails, som din server sender, er immun mod manipulation i transit og vil blive betragtet som mere legitime.
Trin 5 — Aktivere SMTP-Kryptering
Du vil nu aktivere SMTP-kryptering ved at anmode om et gratis TLS-certifikat fra Lad os Kryptere for dit domæne (ved hjælp af Certbot) og konfigurering af Postfix til at bruge den, når du sender beskeder.Ubuntu indeholder Certbot i deres standardpakke repository, men det kan ske, at det er forældet., I stedet, du vil tilføje den officielle repository ved at køre følgende kommando:
- sudo add-apt-repository ppa:certbot/certbot
Tryk ENTER
, når du bliver bedt om at acceptere. Derefter opdatere din server ‘ s package manager cache:
- sudo apt update
Endelig, skal du installere den nyeste version af Certbot:
- sudo apt install certbot -y
Som en del af den oprindelige server setup i de forudsætninger, du har installeret ufw
, ukompliceret firewall. Du skal konfigurere den til at tillade HTTP-porten 80
, så domæneverifikation kan afsluttes., Kør følgende kommando for at aktivere det:
- sudo ufw allow 80
resultatet vil se ud som dette:
OutputRule addedRule added (v6)
Nu, at porten er åben, skal du køre Certbot til at få et certifikat:
- sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain
Denne kommando ordrer Certbot til at udstede certifikater med en RSA-nøgle størrelsen af 4096 bits, til at køre en midlertidig standalone web server (--standalone
) til verifikation, og check via port 80
(--preferred-challenges http
)., Husk at erstatte your_domain
med dit domæne, før du kører kommandoen, og indtast din e-mail-adresse når du bliver bedt om.
udgangen vil svare til dette:
OutputSaving 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 skrevet i noterne blev dit certifikat og din private nøglefil gemt under/etc/letsencrypt/live/your_domain
.
Nu, hvor du har dit certifikat, skal du åbne main.cf
for at redigere:
- sudo nano /etc/postfix/main.cf
Find de følgende afsnit:
Ændre det til at se ud som dette, udskiftning your_domain
med dit domæne, hvor det er nødvendigt, som vil opdatere din TLS-indstillingerne for Postfix:
Når du er færdig, skal du gemme og lukke filen.
Anvende ændringerne ved at genstarte Postfix:
- sudo systemctl restart postfix
Nu, prøv at sende en e-mail igen:
- echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address
Så, tjekke e-mail adresse, du har angivet. Det er muligt, at du straks ser meddelelsen i din indbakke, fordi e-mail-udbydere er meget mere tilbøjelige til at markere ikke-krypterede meddelelser som spam.,
Du kan kontrollere de tekniske oplysninger om e-mail-meddelelsen i din klient for at se, at meddelelsen faktisk er krypteret.
konklusion
du har nu en send-only e-mail-server, drevet af Postfi.. Kryptering af alle udgående meddelelser er et godt første skridt til e-mail-udbydere, der ikke markerer dine meddelelser som spam direkte. Hvis du gør dette i et udviklingsscenarie, skal denne foranstaltning være nok.,
Hvis din brugssag imidlertid er at sende e-mails til potentielle brugere af siteebstedet (såsom bekræftelses-e-mails til en tilmelding til opslagstavle), skal du undersøge opsætning af SPF-poster, så din servers e-mails er endnu mere tilbøjelige til at blive betragtet som legitime.