Als u een e-mail wilt verzenden of ontvangen, moet u een e-mailserver hebben. In dit bericht zullen we de Linux mailserver bespreken en hoe de SMTP (Simple Mail Transfer Protocol) werkt, evenals andere mail-gerelateerde protocollen, zoals Post Office Protocol (POP) en Internet Message Access Protocol (IMAP) en de relatie daartussen.,
inhoudsopgave
Linux SMTP-server
SMTP bepaalt hoe mail van de ene host naar de andere moet worden verzonden; het is ook systeemonafhankelijk, wat betekent dat de afzender en de ontvanger verschillende besturingssystemen kunnen hebben.
SMTP vereist alleen dat een server ASCII-tekst rechtstreeks naar een andere server kan sturen, u kunt dit doen door verbinding te maken met de server op poort 25, de standaard SMTP-poort.
De meeste Linux distributies komen vandaag met twee van de meest voorkomende implementaties van SMTP, namelijk sendmail en Postfix.,
Sendmail is een bekende en gratis mailserver, maar het heeft een beetje complex ontwerp en minder veilig.
de Postfix nam de implementatie van de mailserver een stap verder; ze ontwikkelden het met veiligheid in het achterhoofd.
Mailservicecomponenten
De mailservicecomponenten op elke mailserver bestaan uit drie componenten:
Mail user agent (MUA): dit onderdeel dat de gebruiker ziet en waarmee de gebruiker samenwerkt, zoals Thunderbird en Microsoft Outlook, zijn deze user agents verantwoordelijk voor het lezen van e-mail en zodat u e-mail kunt samenstellen.,
Mail transport agent (MTA): dit onderdeel is verantwoordelijk voor het krijgen van de e-mail van de ene site naar de andere, zoals sendmail en Postfix.
Mail delivery agent (MDA): dit onderdeel is verantwoordelijk voor het distribueren van ontvangen berichten op de lokale machine naar de juiste gebruikers mailbox zoals postfix-maildrop en Procmail.
Setup e-mailserver
We kozen voor de Postfix-mailserver, die vandaag de dag erg populair is onder systeembeheerders.
Postfix is de standaard mailserver op de meeste moderne Linux distributies.,
ten Eerste, moet u controleren of deze is geïnstalleerd op uw systeem of niet:
$ rpm -qa | grep postfix
Als het niet geïnstalleerd is, kunt u het installeren Postfix mail server Red Hat based distro ‘ s zoals dit:
$ dnf -y install postfix
Vervolgens start de postfix service en inschakelen bij opstarten van het systeem:
$ systemctl start postfix$ systemctl enable postfix
Op Debian gebaseerde distributies, zoals Ubuntu, je kunt installeren, zoals dit:
$ apt-get -y install postfix
Het zal u vragen om het type van de configuratie van Postfix mail server tijdens het installatie proces.,
onder de vier keuzes geen configuratie, Internet site, Internet met smarthost, satellietsysteem, en alleen lokaal, zullen we geen configuratie optie kiezen.
configureer Linux mailserver
na het installeren van de Postfix mailserver moet u deze configureren; U kunt de meeste configuratiebestanden vinden in de map/etc/ postfix/.
u kunt de hoofdconfiguratie voor Postfix-mailserver vinden in het bestand/etc/postfix / main.cf.,
dit bestand bevat veel opties zoals:
mijnhostnaam
u kunt deze optie gebruiken om de hostnaam van de mailserver op te geven. Dit is de internet hostnaam, waarop Postfix e-mails zal ontvangen.
de hostnamen kunnen zijn als mail.example.com, smtp.example.com.
myhostname = mail.example.com
Mijndomein
Deze optie is het e-maildomein dat u wilt onderhouden, zoals example.com
de syntaxis is als volgt:
mydomain = example.com
myorigin
alle e-mails verzonden vanaf deze mailserver zullen eruit zien alsof het van deze optie afkomstig is., U kunt dit instellen op $mydomain waarde.
myorigin = $mydomain
u kunt elke optie waarde gebruiken, gewoon voorafgaan met een $ zoals $mydomain.
mydestination
Deze optie toont de domeinen die de Postfix-server gebruikt voor inkomende e-mails.
Het kan waarden als volgt aannemen:
mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain, www.$mydomain
mail_spool_directory
Er zijn twee manieren van bezorging die Postfix-mailserver kan gebruiken:
- direct naar de mailbox van een gebruiker.
- naar een centrale spoolmap, op deze manier zal de mail in /var/spool/mail staan met een bestand voor elke gebruiker.,
mail_spool_directory = /var/spool/mail
mynetworks
met deze optie kunt u instellen welke servers via uw Postfix-server kunnen doorsturen.
Deze optie moet alleen lokale adressen zoals lokale mailscripts op uw server gebruiken.
anders kunnen spammers uw mailserver gebruiken om hun berichten door te geven en uw mailserver op de zwarte lijst staat, waardoor u niet veel e-mails kunt ontvangen.,
Deze optie heeft de volgende syntaxis:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
smtpd_banner
deze variabele stelt het bericht in dat de server zal verzenden wanneer de client na een succesvolle verbinding is gestart.
Het is beter om de banner te veranderen naar iets dat geen aanwijzing geeft van de server die u gebruikt.
inet_protocols
Deze optie specificeert de IP-protocolversie die wordt gebruikt voor serververbindingen.,
inet_protocols = ipv4
Als u de configuratiebestanden voor de Postfix-mailserver wijzigt, moet u de service opnieuw laden:
$ systemctl reload postfix
wanneer u een configuratie typt, kunt u een fout maken, u kunt controleren op fouten met het volgende commando:
$ postfix check
deze tool zal u helpen om precies de lijn en de fout te vinden, zodat u het kunt repareren.
controle van de e-mailwachtrij
soms worden de e-mailwachtrijen gevuld met berichten. Dit gebeurt als gevolg van vele redenen, zoals netwerkfalen of een reden die de e-mail levering kan vertragen.,
om de mailwachtrij op uw Linux mailserver te controleren, gebruikt u het volgende commando:
$ mailq
Dit commando toont de Postfix mailwachtrij.
als uw wachtrij gevuld is en het duurt enkele uren om het bericht te verwerken, dan moet u de wachtrij spoelen.
$ postfix flush
Als u nu uw e-mailwachtrij controleert, zou u deze leeg moeten vinden.
test Linux mailserver
nadat u de Postfix mailserver correct hebt geconfigureerd, moet u uw mailserver testen.,
de eerste stap is het gebruik van een lokale mail user agent zoals mailx of mail, wat een symbolische koppeling is naar mailx.
probeer een mail te sturen naar iemand anders op dezelfde server, als dit werkt, stuur dan naar een externe site.
probeer dan een e-mail te ontvangen van een externe site.
Als u problemen heeft, controleer dan de logs. Het logbestand op op Red Hat gebaseerde distributies in/var/log /maillog bestand en op op Debian gebaseerde distributies in/var/log / mail.logbestand of zoals gedefinieerd in de rsyslogd configuratie.,
Ik raad je aan om de Linux Syslog Server te bekijken voor een gedetailleerde uitleg over logs en hoe de rsyslogd te configureren.
als je nog steeds problemen hebt, probeer dan je DNS instellingen te controleren en controleer je MX records met behulp van Linux netwerk commando ‘ s.
beveilig mailboxen tegen spam met behulp van SpamAssassin
een van de manieren om spam te bestrijden is om de mailboxen te scannen met een gereedschap, waarbij wordt gezocht naar bepaalde patronen die geassocieerd zijn met spam.
een van de beste oplossingen is SpamAssassin, dat open-source is.,
u kunt het als volgt installeren:
$ dnf -y install spamassassin
start de service en activeer het bij het opstarten:
$ systemctl start spamassassin$ systemctl enable spamassassin
zodra u het hebt geïnstalleerd, kunt u de configuratie controleren in
/etc/mail/spamassassin/local.cf
bestand.
SpamAssassin bepaalt of een e-mail spam is of niet op basis van het resultaat van de verschillende scripts scores.
als het bericht een hogere score heeft, betekent dit een hogere mogelijkheid dat de e-mail spam is.,
in het configuratiebestand geeft de parameter required_hits 5 aan dat SpamAssassin een e-mail markeert als spam als de score vijf of hoger is.
de optie report_safe neemt de waarden 0, 1 of 2. Indien ingesteld op 0, betekent dit dat e-mail gemarkeerd als spam wordt verzonden zoals het is, alleen het wijzigen van de headers om te laten zien dat het spam is.
als het de waarde 1 of 2 neemt, genereert SpamAssassin een nieuw rapportbericht en stuurt het het bericht naar de ontvanger.,
de waarde 1 betekent dat het spambericht gecodeerd is als content message / rfc822, terwijl als de waarde 2 is, dat betekent dat het bericht gecodeerd is als tekst/platte inhoud.
de tekst / plain is veiliger omdat sommige mailclients message/rfc822 uitvoeren en de clientcomputer kunnen infecteren.
nu moeten we het integreren in Postfix. De eenvoudigste manier om dit te doen is waarschijnlijk met behulp van procmail.
We moeten een bestand aanmaken, genaamd
/etc/procmailrc
, en de volgende inhoud toevoegen:
:0 hbfw| /usr/bin/spamc
dan bewerken we Postfix configuratiebestand /etc/postfix/main.,cf en change
mailbox_command
mailbox_command = /usr/bin/procmail
ten slotte herstart Postfix en SpamAssassin diensten:
$ systemctl restart postfix$ systemctl restart spamassassin
echter, SpamAssassin herkent soms geen spamberichten die leidden tot mailboxen gevuld met spamberichten.
gelukkig kunt u berichten filteren voordat ze de Postfix-server binnenkomen met behulp van realtime Blackhole Lists (RBLs). Dat zal de belasting op uw mailserver verminderen en uw mailserver schoon houden.
Open het configuratiebestand van Postfix server / etc / postfix / main.,cf en wijzig smtpd_recipient_restrictions optie en voeg de volgende opties als volgt toe:
herstart dan uw postfix server:
$ systemctl restart postfix
de bovenstaande RBLs zijn de meest voorkomende; u kunt meer lijsten op het web vinden en ze proberen.
beveiligen van SMTP-verbinding
Het is beter om uw SMTP-verkeer over TLS te brengen om het te beschermen tegen een MITM-aanval (Man In The Middle).
eerst moeten we het certificaat en de sleutel genereren met behulp van openssl Commando:
voeg dan de volgende optie toe aan Postfix configuratiebestand/etc/postfix / main.,cf:
ten slotte, herstart uw postfix service:
$ systemctl restart postfix
nu moet u de TLS op uw client kiezen wanneer u verbinding maakt met de server.
u krijgt een waarschuwing wanneer u de eerste keer na het wijzigen van de instelling een e-mail verstuurt omdat het certificaat niet ondertekend is.
gebruikmakend van Let ’s Encrypt certificaten
Let’ s Encrypt is een gratis SSL-certificaatprovider waarmee u uw verkeer kunt versleutelen.
in plaats van zelfondertekende certificaten te gebruiken die uw gebruikers irriteren over het vertrouwen, kunt u deze goede oplossing gebruiken.,
Installeer eerst letsencrypt:
$ yum install letsencrypt
of als u Debian gebaseerde distro gebruikt, kunt u het volgende commando gebruiken:
$ apt-get install letsencrypt
voer letsencrypt als volgt uit:
$ letsencrypt certonly --standalone -d yourdomain.com
u moet vervangen yourdomain.com met uw werkelijke domein.
na het beantwoorden van de vragen over de e-mail van het contact, het domein van de e-mailserver en de licentie, zou alles nu in orde moeten zijn.,
de certificaten staan in:
/etc/letsencrypt/live/yourdomain.com/
een laatste ding dat u moet doen, namelijk ervoor zorgen dat postfix deze certificaten gebruikt, u kunt de volgende commando ‘ s gebruiken:
vergeet niet om te vervangen yourdomain.com met uw werkelijke domein.
tot slot, herstart uw postfix server:
$ systemctl restart postfix
POP3 en IMAP protocol basics
tot nu toe hebben we gezien hoe SMTP mail server e-mails verzendt en ontvangt zonder problemen, maar denk aan de volgende situaties:
- gebruikers hebben lokale kopieën van e-mail nodig voor offline weergave.,
- MBOX-bestandsformaat wordt niet ondersteund. Het MBOX formaat wordt gebruikt door veel Mail User agents zoals mailx en mutt.
- gebruikers kunnen niet verbonden blijven met een snel netwerk om een lokale kopie offline te lezen.
- sommige mailservers geven om veiligheidsredenen geen toegang tot de gedeelde mail spool-mappen.
om deze gevallen af te handelen, moet u de mail access protocollen gebruiken.
de meest voorkomende twee populaire mail access protocollen zijn Post Office Protocol (POP) en Internet Message Access Protocol (IMAP).,
het idee achter POP is heel eenvoudig: een centrale Linux mailserver blijft de hele tijd online en ontvangt en bewaart e-mails voor alle gebruikers. Alle ontvangen e-mails staan in de wachtrij op de server totdat een gebruiker ze grijpt.
wanneer een gebruiker een e-mail wil versturen, stuurt de e-mailclient het normaal door via de centrale Linux mailserver via SMTP.
merk op dat de SMTP-server en de POP-server probleemloos op hetzelfde systeem kunnen staan. De meeste servers doen dit vandaag.
functies zoals het bewaren van een hoofdkopie van de e-mail van een gebruiker op de server ontbraken, wat leidde tot de ontwikkeling van IMAP.,
door IMAP te gebruiken, ondersteunt uw Linux mailserver drie toegangsmodi:
- de online modus is vergelijkbaar met directe toegang tot het bestandssysteem tot de Linux mailserver.
- de offline modus is vergelijkbaar met hoe POP werkt, waarbij de client wordt losgekoppeld van het netwerk, behalve wanneer een e-mail wordt opgehaald. In deze modus bewaart de server normaal gesproken geen kopie van de e-mail.
- de niet-verbonden modus werkt door gebruikers toe te staan om kopieën van hun e-mails in de cache te bewaren, en de server behoudt een kopie van de e-mail.,
Er zijn verschillende implementaties voor IMAP en POP; de meest populaire is de Dovecot-server, die beide protocollen biedt.
de POP3, POP3S, IMAP en IMAPS luisteren op respectievelijk de poorten 110, 995, 143 en 993.
installeren van Dovecot
De meeste Linux distributies komen met Dovecot voorgeïnstalleerd., U kunt Dovecot echter als volgt installeren in op Red Hat gebaseerde distributies:
$ dnf -y install dovecot
Debian gebaseerde distributies bieden de IMAP-en POP3-functionaliteit in twee afzonderlijke pakketten, u kunt ze als volgt installeren:
$ apt-get -y install dovecot-imapd dovecot-pop3d
Het zal u vragen om zelfondertekende certificaten te maken voor het gebruik van IMAP en POP3 via SSL / TLS. Selecteer Ja en voer de hostnaam voor uw systeem in wanneer daarom wordt gevraagd.,
dan kunt u de service als volgt uitvoeren en inschakelen bij het opstarten:
$ systemctl start dovecot$ systemctl enable dovecot
Configure Dovecot
Het hoofdconfiguratiebestand voor Dovecot is
/etc/dovecot/dovecot.conf
bestand.
sommige Linux distributies plaatsen de configuratie onder
/etc/dovecot/conf.d/
directory en gebruiken de include directive om de instellingen in de bestanden op te nemen.
U kunt de volgende lijst met parameters gebruiken om Dovecot in te stellen:
protocollen: de protocollen die u wilt ondersteunen.
protocols = imap pop3 lmtp
lmtp betekent lokaal mail transfer protocol.,
listen: IP-adressen om op te luisteren.
listen = *, ::
de asterisk betekent alle ipv4-interfaces en :: betekent alle ipv6-interfaces
userdb: user database voor het authenticeren van gebruikers.
userdb {driver = pam}
passdb: wachtwoorddatabase voor authenticatie van gebruikers.
passdb {driver = passwd}
mail_locatie: dit item in /etc/dovecot/conf.d / 10-mail.conf-bestand:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
Secure Dovecot
Dovecot wordt geleverd met generieke SSL-certificaten en sleutelbestanden., Kijk naar dit bestand:
/etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/pki/dovecot/certs/dovecot.pemssl_key = </etc/pki/dovecot/private/dovecot.pem
wanneer een gebruiker verbinding probeert te maken met de Dovecot-server, zal er een waarschuwing worden weergegeven omdat de certificaten niet zijn ondertekend, u kunt een certificaat kopen bij een certificaatautoriteit als u wilt.
of als u kiest voor Let ’s Encrypt certificaten, kunt u ze aanwijzen:
ssl_cert = </etc/letsencrypt/live/yourdomain.com/fullchain.pemssl_key = </etc/letsencrypt/live/yourdomain.com/privkey.pem
vergeet niet Dovecot server poorten te openen in uw iptables firewall door iptables regels toe te voegen voor poorten 110, 995, 143, 993, 25.
sla dan de regels op.,
of als u firewalld gebruikt, kunt u het volgende doen:
en nogmaals, voor het oplossen van problemen, controleert u de logbestanden/var/log /messages,/var/log /maillog, en/var/log / mail.logbestanden.
Linux mail server is een van de makkelijkste servers om mee te werken, vooral de Postfix mail server.
Ik hoop dat u het bericht nuttig en interessant vindt. Blijf terugkomen.
Dank u.
oprichter van LikeGeeks. Ik werk sinds 2010 als Linux systeembeheerder., Ik ben verantwoordelijk voor het onderhouden, beveiligen en oplossen van problemen met Linux-servers voor meerdere clients over de hele wereld. Ik hou van het schrijven van shell en Python scripts om mijn werk te automatiseren.
Geef een reactie