om du vill skicka eller ta emot ett e-postmeddelande bör du ha en e-postserver. I det här inlägget kommer vi att diskutera Linux mail-servern och hur SMTP (Simple Mail Transfer Protocol) fungerar samt andra postrelaterade protokoll, som Post Office Protocol (POP) och Internet Message Access Protocol (IMAP) och förhållandet mellan dem.,
Innehållsförteckning
Linux SMTP-server
SMTP definierar hur man skickar e-post från en värd till en annan; det är också systemoberoende, vilket innebär att avsändaren och mottagaren kan ha olika operativsystem.
SMTP kräver bara att en server kan skicka direkt ASCII-text till en annan server, du kan göra detta genom att ansluta till servern på port 25, som är standard SMTP-port.
de flesta Linux-distributioner kommer idag med två av de vanligaste implementeringarna av SMTP, som är sendmail och Postfix.,
Sendmail är en berömd och gratis e-postserver, men den har en lite komplex design och mindre säker.
postfix tog implementeringen av e-postservern ett steg längre; de utvecklade den med säkerhet i åtanke.
posttjänstkomponenter
posttjänsten på en e-postserver har tre komponenter:
Mail user agent (MUA): den här komponenten som användaren ser och interagerar med som Thunderbird och Microsoft Outlook, är dessa användaragenter ansvariga för att läsa e-post och låter dig komponera e-post.,
mail transport agent (MTA): denna komponent är ansvarig för att få posten från en webbplats till en annan som Sendmail och Postfix.
Mail delivery agent (MDA): denna komponent är ansvarig för att distribuera mottagna meddelanden på den lokala datorn till lämplig användar brevlåda som postfix-maildrop och Procmail.
Konfigurera e-postserver
Vi valde Postfix-postservern, vilket är mycket populärt och vanligt bland systemadministratörer idag.
Postfix är standardpostservern på de flesta moderna Linux-distributioner.,
kontrollera först om den är installerad på ditt system eller inte:
$ rpm -qa | grep postfix
om den inte är installerad kan du installera Postfix-postserver på Red Hat-baserade distributioner så här:
$ dnf -y install postfix
starta sedan postfix-tjänsten och aktivera den vid systemstart:
$ systemctl start postfix$ systemctl enable postfix
på Debianbaserade distributioner som Ubuntu kan du installera det så här:
$ apt-get -y install postfix
det kommer att be dig att välja typ av konfiguration av postfix-postservern under installationsprocessen.,
bland de fyra val Ingen konfiguration, webbplats, Internet med smarthost, satellitsystem, och endast lokala, kommer vi att välja ingen konfigurationsalternativ.
konfigurera Linux mail server
Efter installationen av Postfix mail server, måste du konfigurera den; du kan hitta de flesta av dess konfigurationsfiler under/etc/ postfix / katalogen.
Du kan hitta huvudkonfigurationen för postfix-postserver i/etc/postfix / main.cf-filen.,
den här filen innehåller många alternativ som:
myhostname
Du kan använda det här alternativet för att ange mailserverns värdnamn. Det här är Internet-värdnamnet, vilket Postfix kommer att få e-post på det.
värdnamnen kan vara som mail.example.com, smtp.example.com.
myhostname = mail.example.com
mydomain
det här alternativet är den postdomän som du kommer att betjäna, som example.com
syntaxen är så här:
mydomain = example.com
myorigin
alla e-postmeddelanden som skickas från den här mailservern kommer att se ut som om det kom från det här alternativet., Du kan ställa in detta till $mydomain värde.
myorigin = $mydomain
Du kan använda valfritt alternativvärde, bara föregå det med en $ like $mydomain.
mydestination
det här alternativet listar de domäner som Postfix-servern använder för inkommande e-post.
det kan ta värden så här:
mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain, www.$mydomain
mail_spool_directory
det finns två leveranssätt som Postfix mail server kan använda:
- direkt till en användares brevlåda.
- till en central spool katalog, detta sätt, posten kommer att vara i /var/spool/mail med en fil för varje användare.,
mail_spool_directory = /var/spool/mail
mynetworks
med det här alternativet kan du konfigurera vilka servrar som kan vidarebefordra via din Postfix-server.
det här alternativet bör ta lokala adresser som lokala e-postskript endast på din server.
annars kan spammare använda din e-postserver för att vidarebefordra sina meddelanden och din e-postserver svartlistad och som ett resultat kommer du inte att kunna ta emot många e-postmeddelanden.,
det här alternativet har följande syntax:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
smtpd_banner
denna variabel anger meddelandet som servern skickar när klienten efter en lyckad anslutning.
det är bättre att ändra bannern till något som inte ger någon aning om servern du använder.
inet_protocols
det här alternativet anger IP-protokollversionen som används för serveranslutningar.,
inet_protocols = ipv4
om du ändrar konfigurationsfilerna för Postfix-postservern måste du ladda om tjänsten:
$ systemctl reload postfix
När du skriver någon konfiguration kan du göra ett misstag, du kan kontrollera om det finns fel med följande kommando:
$ postfix check
det här verktyget hjälper dig att hitta exakt raden fel så att du kan fixa det.
kontrollera e-postkön
ibland fylls e-postköerna med meddelanden. Detta händer på grund av många skäl, som nätverksfel eller någon anledning som kan fördröja e-postleverans.,
för att kontrollera e-postkön på din Linux-postserver, använd följande kommando:
$ mailq
det här kommandot visar postfix-postkön.
om din kö är fylld och meddelandet tar flera timmar att bearbeta, ska du spola postkön.
$ postfix flush
Nu, om du kontrollerar din postkö, bör du hitta den tom.
testa Linux mail server
När du har konfigurerat postfix mail server korrekt, bör du testa din e-postserver.,
det första steget är att använda en lokal e-postanvändaragent som mailx eller mail, som är en symbolisk länk till mailx.
försök att skicka ett mail till någon annan på samma server, om det fungerar, Skicka sedan till en avlägsen webbplats.
försök sedan ta emot ett mail från en avlägsen webbplats.
om du har några problem, kontrollera loggarna. Loggfilen på Red Hat-baserade distributioner i/var /log / maillogfilen och på Debianbaserade distributioner i / var/log / mail.loggfil eller enligt definitionen i rsyslogd-konfigurationen.,
Jag rekommenderar dig att granska Linux Syslog-servern för en detaljerad förklaring om loggar och hur du konfigurerar rsyslogd.
om du fortfarande har problem kan du försöka kontrollera DNS-inställningarna och kontrollera MX-posterna med Linux-nätverkskommandon.
säkra brevlådor från spam med SpamAssassin
ett av sätten att bekämpa spam är att skanna brevlådorna med något verktyg och söka efter vissa mönster som är associerade med spam.
en av de bästa lösningarna är SpamAssassin, som är öppen källkod.,
Du kan installera det så här:
$ dnf -y install spamassassin
starta sedan tjänsten och aktivera den vid start:
$ systemctl start spamassassin$ systemctl enable spamassassin
När du har installerat det kan du kontrollera konfigurationen i
/etc/mail/spamassassin/local.cf
fil.
SpamAssassin avgör om ett e-postmeddelande är spam eller inte baserat på resultatet av de olika scriptspoängen.
om meddelandet har en högre poäng innebär det en högre möjlighet att posten är spam.,
i konfigurationsfilen anger parametern required_hits 5 att SpamAssassin kommer att markera ett e-postmeddelande som spam om dess poäng är fem eller högre.
alternativet report_safe tar värdena 0, 1 eller 2. Om den är inställd på 0 betyder det att e-post markerad som spam skickas som den är, bara ändra rubrikerna för att visa att det är spam.
om det tar värdet 1 eller 2 genererar SpamAssassin ett nytt rapportmeddelande och skickar meddelandet till mottagaren.,
värdet 1 betyder att skräppostmeddelandet kodas som innehållsmeddelande/rfc822, medan om värdet är 2 betyder det att meddelandet kodas som text / vanligt innehåll.
texten/plain är säkrare eftersom vissa e-postklienter utför meddelande / rfc822 och kan infektera klientdatorn.
nu måste vi integrera det i Postfix. Det enklaste sättet att göra detta är förmodligen genom att använda procmail.
Vi måste skapa en fil med namnet
/etc/procmailrc
och lägga till följande innehåll:
:0 hbfw| /usr/bin/spamc
sedan redigerar vi Postfix-konfigurationsfilen /etc/postfix/main.,cf och ändra
mailbox_command
mailbox_command = /usr/bin/procmail
slutligen, starta om Postfix och SpamAssassin services:
$ systemctl restart postfix$ systemctl restart spamassassin
SpamAssassin känner dock inte igen skräppostmeddelanden som ledde till brevlådor fyllda med skräppostmeddelanden.
lyckligtvis kan du filtrera meddelanden innan de går in i Postfix-servern med Realtime Blackhole Lists (RBLs). Det kommer att minska belastningen på din e-postserver och hålla din e-postserver ren.
Öppna konfigurationsfilen för Postfix server/etc/postfix / main.,cf och ändra smtpd_recipient_restrictions alternativ och Lägg till följande alternativ så här:
starta sedan om din postfix-server:
$ systemctl restart postfix
ovanstående RBLs är vanliga; Du kan hitta fler listor på webben och prova dem.
säkra SMTP-anslutning
det är bättre att överföra din SMTP-trafik över TLS för att skydda den från Man i mitten (MITM) attack.
först måste vi skapa certifikatet och nyckeln med openssl-kommandot:
lägg sedan till följande alternativ till postfix-konfigurationsfilen /etc/postfix/main.,cf:
Starta slutligen om postfix-tjänsten:
$ systemctl restart postfix
nu måste du välja TLS på din klient när du ansluter till servern.
du får en varning när du skickar ett mail första gången efter att du ändrat inställningen eftersom certifikatet inte är signerat.
använda Låt oss kryptera certifikat
Låt oss kryptera är en gratis SSL-certifikatleverantör som gör att du kan kryptera din trafik.
i stället för att använda självsignerade certifikat som irriterar användarna om att lita på dem kan du använda den här bra lösningen.,
först, installera letsencrypt:
$ yum install letsencrypt
eller om du använder Debianbaserad distro, kan du använda följande kommando:
$ apt-get install letsencrypt
kör sedan letsencrypt så här:
$ letsencrypt certonly --standalone -d yourdomain.com
Du bör ersätta yourdomain.com med din faktiska domän.
Efter att ha svarat på de frågor som efterfrågas om kontaktmeddelandet, e-postserverdomänen och licensen ska allt vara OK nu.,
certifikaten kommer att vara i:
/etc/letsencrypt/live/yourdomain.com/
en sista sak du måste göra, vilket gör postfix använda dessa certifikat, kan du använda följande kommandon:
glöm inte att ersätta yourdomain.com med din faktiska domän.
Starta slutligen om din postfix-server:
$ systemctl restart postfix
POP3 och IMAP Protocol basics
hittills har vi sett hur SMTP-postservern skickar och tar emot e-post utan problem, men överväga följande situationer:
- användare behöver lokala kopior av e-post för visning offline.,
- MBOX filformat stöds inte. MBOX-formatet används av många mailanvändare som mailx och mutt.
- användare kan inte hålla kontakten med ett snabbt nätverk för att ta en lokal kopia att läsa offline.
- vissa e-postservrar ger inte åtkomst till delade e-postrullkataloger av säkerhetsskäl.
för att hantera dessa fall bör du använda poståtkomstprotokollen.
de vanligaste två populära mail access-protokollen är Post Office Protocol (POP) och Internet Message Access Protocol (IMAP).,
idén bakom POP är mycket enkel: en central Linux mail server förblir online hela tiden och tar emot och lagra e-post för alla användare. Alla mottagna e-postmeddelanden köas på servern tills en användare griper dem.
När en användare vill skicka ett e-postmeddelande vidarebefordrar e-postklienten det via den centrala Linux-postservern via SMTP normalt.
Observera att SMTP-servern och POP-servern kan vara på samma system utan problem. De flesta servrar gör det idag.
funktioner som att hålla en huvudkopia av en användares e-post på servern saknades, vilket ledde till utvecklingen av IMAP.,
genom att använda IMAP kommer din Linux mail-server att stödja tre åtkomstlägen:
- online-läget liknar att ha direkt filsystemåtkomst till Linux mail-servern.
- offline-läget liknar hur POP fungerar, där klienten kopplas bort från nätverket utom när du tar tag i ett e-postmeddelande. I det här läget behåller servern normalt inte en kopia av e-postmeddelandet.
- det frånkopplade läget fungerar genom att tillåta användare att behålla cachade kopior av sina e-postmeddelanden, och servern behåller en kopia av e-postmeddelandet.,
det finns flera implementeringar för IMAP och POP; den mest populära är Dovecot-servern, som tillhandahåller båda protokollen.
POP3, POP3S, IMAP och IMAPS lyssnar på portarna 110, 995, 143 respektive 993.
installera Dovecot
de flesta Linux-distributioner levereras med Dovecot förinstallerat., Du kan dock installera Dovecot i Red Hat-baserade distributioner så här:
$ dnf -y install dovecot
Debianbaserade distributioner tillhandahåller IMAP-och POP3-funktionaliteten i två separata paket, du kan installera dem så här:
$ apt-get -y install dovecot-imapd dovecot-pop3d
det kommer att be dig att skapa självsignerade certifikat för att använda IMAP och POP3 över SSL/TLS. Välj Ja och ange värdnamnet för ditt system när du uppmanas.,
då kan du köra tjänsten och aktivera den vid start så här:
$ systemctl start dovecot$ systemctl enable dovecot
konfigurera Dovecot
huvudkonfigurationsfilen för Dovecot är
/etc/dovecot/dovecot.conf
fil.
vissa Linux-distributioner lägger konfigurationen under
/etc/dovecot/conf.d/
katalog och använder inkluderingsdirektivet för att inkludera inställningarna i filerna.
Du kan använda följande lista över parametrar för att konfigurera Dovecot:
protokoll: de protokoll du vill stödja.
protocols = imap pop3 lmtp
LMTP betyder local mail transfer protocol.,
lyssna: IP-adresser för att lyssna på.
listen = *, ::
asterisken betyder alla IPv4-gränssnitt och :: betyder alla IPv6-gränssnitt
userdb: användardatabas för autentisering av användare.
userdb {driver = pam}
passdb: lösenordsdatabas för autentisering av användare.
passdb {driver = passwd}
mail_location: den här posten i /etc/dovecot/conf.d / 10-Post.conf-fil:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
Secure Dovecot
Dovecot levereras med generiska SSL-certifikat och nyckelfiler., Titta på den här filen:
/etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/pki/dovecot/certs/dovecot.pemssl_key = </etc/pki/dovecot/private/dovecot.pem
När en användare försöker ansluta till Dovecot-servern visas en varning eftersom certifikaten inte är signerade kan du köpa ett certifikat från en certifikatutfärdare om du vill.
eller om du går med Let ’ s Encrypt certifikat, kan du peka på dem istället:
ssl_cert = </etc/letsencrypt/live/yourdomain.com/fullchain.pemssl_key = </etc/letsencrypt/live/yourdomain.com/privkey.pem
glöm inte att öppna Dovecot serverportar i din iptables brandvägg genom att lägga till iptables regler för portar 110, 995, 143, 993, 25.
spara sedan reglerna.,
eller om du använder firewalld kan du göra följande:
och igen, för felsökning, kontrollerar du loggfilerna /var/log/messages, /var/log/maillogg och /var/log/mail.loggfiler.
Linux mail server är en av de enklaste servrarna att arbeta med, särskilt postfix mail server.
Jag hoppas att du hittar inlägget användbart och intressant. Kom tillbaka.
Tack.
grundare av LikeGeeks. Jag arbetar som Linux systemadministratör sedan 2010., Jag är ansvarig för att upprätthålla, säkra och felsöka Linux-servrar för flera kunder runt om i världen. Jag älskar att skriva shell och Python skript för att automatisera mitt arbete.
Lämna ett svar