de auteur heeft het gratis en Open Source fonds geselecteerd om een donatie te ontvangen als onderdeel van het Schrijf voor donaties-programma.
Inleiding
Postfix is een mail transfer agent (MTA), een toepassing die wordt gebruikt om e-mail te verzenden en te ontvangen. Het kan zo worden geconfigureerd dat het kan worden gebruikt om e-mails te verzenden door alleen lokale toepassing., Dit is handig in situaties waarin u regelmatig e-mailberichten vanuit uw apps moet verzenden of gewoon veel uitgaand verkeer moet hebben dat een e-mailprovider van derden niet toestaat. Het is ook een lichter alternatief voor het draaien van een full-blown SMTP-server, met behoud van de vereiste functionaliteit.
in deze tutorial installeert en configureert u Postfix als een send-only SMTP-server. U zult ook gratis TLS-certificaten aanvragen bij Let ‘ s Encrypt voor uw domein en de uitgaande e-mails versleutelen met behulp van deze.
vereisten
- Eén Ubuntu 18.,04 server ingesteld met de initiële Server Setup met Ubuntu 18.04, inclusief het maken van een sudo niet-root gebruiker.
- een volledig geregistreerde domeinnaam. Deze tutorial zal
your_domain
gebruiken. U kunt een domeinnaam kopen op Namecheap, krijgen een gratis op Freenom, of gebruik maken van de domeinnaam registrar van uw keuze. - Een DNS-record met
your_domain
wijst naar het publieke IP-adres van uw server. U kunt deze inleiding tot DigitalOcean DNS volgen voor details over hoe u ze kunt toevoegen.,
opmerking: de hostnaam van uw server en de naam van uw druppel moeten overeenkomen met your_domain
, omdat DigitalOcean automatisch PTR-records voor het IP-adres van de druppel instelt op basis van de naam.
u kunt de hostnaam van de server verifiëren door hostname
achter de opdrachtprompt te typen. De uitvoer moet overeenkomen met de naam die u de druppel gaf toen het werd gemaakt.
Stap 1-Postfix installeren
in deze stap installeert u Postfix., De snelste manier is om het mailutils
pakket te installeren, dat Postfix bundelt met een paar aanvullende programma ‘ s die je zult gebruiken om het verzenden van e-mail te testen.
eerst de pakketdatabase bijwerken:
- sudo apt update
daarna installeer Postfix door het volgende commando uit te voeren:
- sudo apt install mailutils
aan het einde van het installatieproces wordt u het postfix-configuratievenster getoond:
de standaardoptie is Internet Site
., Dat is de aanbevolen optie voor uw use case, dus druk op TAB
, en dan ENTER
. Als u alleen de beschrijvingstekst ziet, drukt u op TAB
om OK
te selecteren, en vervolgens ENTER
.,
als het niet automatisch wordt weergegeven, voer dan het volgende commando uit om het te starten:
- sudo dpkg-reconfigure postfix
daarna krijgt u een andere configuratieprompt met betrekking tot de systeemmailnaam:
De systeemmailnaam moet dezelfde zijn als de naam die u aan uw server hebt toegewezen toen u het aanmaakte. Als u klaar bent, drukt u op TAB
, gevolgd door ENTER
.
U hebt Postfix nu geïnstalleerd en bent klaar om het te configureren.,
Stap 2-Postfix configureren
in deze stap configureert u Postfix om alleen e—mails te verzenden en ontvangen van de server waarop het draait-dat wil zeggen vanaf localhost
.
om dat te laten gebeuren, moet Postfix geconfigureerd worden om alleen te luisteren op de loopback interface, de virtuele netwerk interface die de server gebruikt om intern te communiceren. Om de wijzigingen aan te brengen, moet u het hoofd postfix configuratie bestand genaamd main.cf
bewerken, opgeslagen onder etc/postfix
.,
Openen voor bewerken met je favoriete tekst editor:
- sudo nano /etc/postfix/main.cf
Zoek de volgende regels:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = all. . .
Stel de waarde in van de inet_interfaces
omgeving om loopback-only
:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = loopback-only. . .
een Andere richtlijn die je nodig hebt om te wijzigen is mydestination
, die wordt gebruikt voor het opgeven van de lijst van domeinen die worden geleverd via de local_transport
mail delivery vervoer., Standaard zijn de waarden vergelijkbaar met deze:
. . .mydestination = $myhostname, your_domain, localhost.com, , localhost. . .
Verander de regel om er als volgt uit te zien:
. . .mydestination = localhost.$mydomain, localhost, $myhostname. . .
als uw domein eigenlijk een subdomein is, en u wilt de e-mailberichten om eruit te zien alsof ze vanuit het hoofddomein zijn verzonden, kunt u de volgende regel toevoegen aan het einde van main.cf
:
...masquerade_domains = your_main_domain
De optionele masquerade_domains
instelling geeft aan voor welke domeinen het subdomein deel zal worden verwijderd in het e-mailadres.
sla het bestand op en sluit het.
Opmerking: Als u meerdere domeinen host op een enkele server, kunnen de andere domeinen ook worden doorgegeven aan Postfix met behulp van demydestination
richtlijn.
herstart Postfix vervolgens door het volgende commando uit te voeren:
- sudo systemctl restart postfix
u hebt Postfix geconfigureerd om alleen e-mails van uw server te verzenden., Je test het nu door een voorbeeldbericht naar een e-mailadres te sturen.
Stap 3-testen van de SMTP-Server
in deze stap test U of Postfix e-mails naar een extern e-mailaccount kan verzenden met behulp van het mail
commando, dat deel uitmaakt van het mailutils
pakket dat u in de eerste stap hebt geïnstalleerd.
om een test-e-mail te verzenden, voer je het volgende commando uit:
- echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
je kunt de inhoud en het onderwerp van de e-mail naar wens wijzigen., Vergeet niet om your_email_address
te vervangen door een geldig e-mailadres dat u kunt openen.
Controleer nu het e-mailadres waarnaar u dit bericht hebt verzonden. U zou het bericht in uw postvak IN moeten zien. Als het er niet is, controleer uw spam folder. Op dit punt, alle e-mails die u verzendt zijn niet-versleuteld, waardoor serviceproviders denken dat het waarschijnlijk spam. Je zal de encryptie later instellen, in Stap 5.,
Als u een fout ontvangt van het mail
commando, of als u na langere tijd geen bericht hebt ontvangen, controleer dan of de Postfix configuratie die u hebt bewerkt geldig is en of de naam en hostnaam van uw server zijn ingesteld op uw domein.
merk op dat met deze configuratie het adres in het From
veld voor de test e-mails die u verzendt de vorm zal hebben van your_user_name@your_domain
, waarbij your_user_name
de gebruikersnaam is van de servergebruiker die u de opdracht hebt gegeven.,
u hebt nu een e-mail van uw server verzonden en geverifieerd dat deze met succes is ontvangen. In de volgende stap, zal u e-mail forwarding instellen voor root
.
Stap 4 – doorsturen van Systeemmail
In deze stap stelt u e-mail doorsturen in voor gebruiker root
, zodat door het systeem gegenereerde berichten die op uw server worden verzonden, worden doorgestuurd naar een extern e-mailadres.
het/etc/aliases
bestand bevat een lijst met alternatieve namen voor e-mailontvangers., Open het voor bewerken:
- sudo nano /etc/aliases
In zijn standaard staat ziet het er als volgt uit:
# See man 5 aliases for formatpostmaster: root
de enige aanwezige richtlijn specificeert dat systeem gegenereerde e-mails worden verzonden naar root
.
voeg de volgende regel toe aan het einde van het bestand:
...root: your_email_address
Met deze regel geeft u aan dat e-mails die naar root
worden verzonden, naar een e-mailadres worden doorgestuurd. Vergeet niet om your_email_address
te vervangen door uw persoonlijke e-mailadres., Als je klaar bent, sla het bestand op en sluit het.
om de wijziging door te voeren, voer je het volgende commando uit:
- sudo newaliases
het uitvoeren van newaliases
zal een database van aliassen opbouwen die het commando mail
gebruikt, die zijn overgenomen uit het config bestand dat je zojuist hebt bewerkt.
Test of het verzenden van e-mails naar root
werkt door het uitvoeren van:
- echo "This is the body of the email" | mail -s "This is the subject line" root
u moet de e-mail op uw e-mailadres ontvangen. Als het er niet is, controleer uw spam folder.,
in deze stap hebt u systeemgegenereerde berichten naar uw e-mailadres doorgestuurd. U schakelt nu berichtenversleuteling in, zodat alle e-mails die uw server verstuurt immuun zijn voor manipulatie tijdens het transport en als meer legitiem worden beschouwd.
Stap 5-SMTP-encryptie inschakelen
U schakelt nu SMTP-encryptie in door een gratis TLS-certificaat aan te vragen bij Let ‘ s Encrypt voor uw domein (met Certbot) en Postfix te configureren om het te gebruiken bij het verzenden van berichten.
Ubuntu bevat Certbot in hun standaard pakketrepository, maar het kan gebeuren dat het verouderd is., In plaats daarvan voeg je de officiële repository toe door het volgende commando uit te voeren:
- sudo add-apt-repository ppa:certbot/certbot
druk op ENTER
wanneer gevraagd wordt om te accepteren. Vervolgens de pakketbeheer cache van uw server bijwerken:
- sudo apt update
tot slot installeert u de nieuwste versie van Certbot:
- sudo apt install certbot -y
als onderdeel van de initiële serverinstellingen installeerde u ufw
, de ongecompliceerde firewall. U moet het configureren om de HTTP-poort 80
toe te staan, zodat domeinverificatie kan worden voltooid., Voer het volgende commando uit te schakelen:
- sudo ufw allow 80
De uitvoer ziet er als volgt uit:
OutputRule addedRule added (v6)
Nu dat de poort open is, lopen Certbot tot het verkrijgen van een certificaat:
- sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain
Dit commando bestellingen Certbot voor de uitgifte van certificaten met een RSA-sleutel grootte van 4096 bits, voor het uitvoeren van een tijdelijke zelfstandige web server (--standalone
) voor verificatie, en te controleren via poort 80
(--preferred-challenges http
)., Vergeet niet om your_domain
te vervangen door uw domein voordat u het commando uitvoert, en voer uw e-mailadres in wanneer daarom wordt gevraagd.
De uitvoer zal vergelijkbaar zijn met deze:
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
zoals geschreven in de notes, zijn uw certificaat en privésleutel bestand opgeslagen onder /etc/letsencrypt/live/your_domain
.
nu u uw certificaat hebt, open main.cf
Voor het bewerken:
- sudo nano /etc/postfix/main.cf
Zoek de volgende sectie:
Wijzig het om er zo uit te zien, vervang your_domain
waar nodig door uw domein, wat uw TLS-instellingen voor Postfix zal bijwerken:
Als u klaar bent, slaat u het bestand op en sluit het.
Pas de wijzigingen toe door Postfix opnieuw op te starten:
- sudo systemctl restart postfix
Probeer nu opnieuw een e-mail te versturen:
- echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address
controleer dan het e-mailadres dat u hebt opgegeven. Het is mogelijk dat u het bericht onmiddellijk in uw postvak IN ziet, omdat e-mailproviders veel meer kans hebben om niet-versleutelde berichten als spam te markeren.,
u kunt de technische informatie over het e-mailbericht in uw client controleren om te zien dat het bericht inderdaad versleuteld is.
conclusie
u hebt nu een e-mailserver met alleen verzenden, aangedreven door Postfix. Het versleutelen van alle uitgaande berichten is een goede eerste stap om e-mail providers niet markeren uw berichten als spam regelrecht. Als je dit doet in een ontwikkelingsscenario, dan moet deze maatregel voldoende zijn.,
echter, als uw use case is om e-mails te sturen naar potentiële gebruikers van de site (zoals bevestigingsmails voor een message board sign-up), moet u kijken naar het opzetten van SPF records, zodat de e-mails van uw server Nog meer kans om te worden gezien als legitiem.