Postfix på CentOS: äldre installation och säkerhet 2026


Publicerad:

Uppdaterad:


Tekniska artiklar > Postfix på CentOS: äldre installation och säkerhet 2026

Status 2026 och säker användning

Slutsats: Att Postfix startar innebär inte att e-postservern är produktionsklar. Den behöver ett system och paket som stöds, korrekt DNS-identitet, strikt reläpolicy, autentiserad submission, modern TLS, certifikatförnyelse, missbruksskydd, loggning och köövervakning.

Det här går artikeln igenom

  • Vad den ursprungliga genomgången för CentOS 7 och Postfix 2.10.1 konfigurerade.
  • Varför autentisering på submission-porten aldrig får skapa ett öppet relä.
  • Vilka beslut om TLS, SASL, DNS, brandvägg och drift som måste omprövas i en aktuell installation.

Målgrupp: Erfarna administratörer som granskar en äldre driftinstruktion för Postfix. Artikeln är inte en färdig instruktion för att publicera en ny e-postserver.

Läge 2026: CentOS 7 och de angivna paketversionerna är föråldrade. Konfigurationen nedan har inte validerats som en säker aktuell e-posttjänst och får inte användas oförändrad. Kontrollera särskilt att submission-reglerna avslutas med en uttrycklig avvisningspolicy, skydda autentiseringsuppgifter och använd paketets granskade systemd-enhet.

Säkerhetsinformation: Kommandona och konfigurationsexemplen har inte testats på nytt i en aktuell produktionsmiljö. Verifiera reläpolicy, DNS, TLS, SASL, brandvägg, säkerhetskopior och återställning i en separat testmiljö.

Viktiga officiella källor

Översikt

Artikeln dokumenterar installation och en äldre konfiguration av Postfix på CentOS 7, inklusive submission-port och SASL-autentisering.

Dovecot på CentOS: äldre IMAP/POP3-installation

Postfix är en Mail Transfer Agent som tar emot, vidarebefordrar och levererar e-post via SMTP. Dovecot ger e-postklienter åtkomst till postlådor via bland annat IMAP och POP3; tjänsterna har alltså kompletterande men inte identiska roller.

Originalmiljön använde följande versioner.

CentOS-version7.6 (1810)
Postfix-version2.10.1

Innehållsförteckning

  1. Installation
  2. Grundkonfiguration
  3. Sammanfattning

1. Installation

Det här avsnittet beskriver paketinstallationen och en första startkontroll i originalmiljön.

1-1. Installera Postfix

I den äldre CentOS-miljön installerades paketet postfix med yum och root-behörighet.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix

1-2. Kontrollera att Postfix startar

Starta Postfix och kontrollera att dess master-, pickup- och qmgr-processer körs.

[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root      1485  0.7  0.2  89744  2128 ?        Ss   16:02   0:00 /usr/libexec/postfix/master -w
postfix   1486  0.2  0.4  89848  4080 ?        S    16:02   0:00 pickup -l -t unix -u
postfix   1487  0.2  0.4  89916  4104 ?        S    16:02   0:00 qmgr -l -t unix -u
root      1489  0.0  0.1 112824   964 pts/0    S+   16:02   0:00 grep --color=auto postfix

När processerna visas utan startfel stoppar originalproceduren tjänsten igen före konfigurationen.

[root@hostname ~]# /usr/sbin/postfix stop

2. Grundkonfiguration

2-1. Konfigurera identitet och lokala domäner

Huvudkonfigurationen finns i /etc/postfix/main.cf. Originalartikeln ändrar serveridentitet, lokala domäner, lyssningsgränssnitt, betrodda nät och postlådeformat.

[root@hostname ~]# vi /etc/postfix/main.cf

Den bevarade ändringen ser ut så här.

main.cf【Före förändring】


#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~förkortning~
#
#mydomain = domain.tld
~förkortning~
#myorigin = $myhostname
#myorigin = $mydomain
~förkortning~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~förkortning~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
~förkortning~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~förkortning~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/

main.cf【efter ändringen】


#
myhostname = example.com
#myhostname = virtual.domain.tld
~förkortning~
#
mydomain = example.com
~förkortning~
#myorigin = $myhostname
myorigin = $mydomain
~förkortning~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~förkortning~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
~förkortning~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~förkortning~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/

myhostname anger e-postserverns fullständiga värdnamn, mydomain domänen och myorigin den domän som används för lokalt skapad e-post. I exempeladressen "https://example.com/" är example.com domännamnet. Ersätt det med verkliga DNS-namn som har korrekta A/AAAA-, MX- och PTR-poster.

Med den visade domänen får en lokal mottagare exempelvis adressen username@example.com.

mynetworks definierar betrodda klientnät som kan få reläbehörighet. Ange endast nät som administratören kontrollerar; ett för brett värde kan skapa ett öppet relä.

home_mailbox = Maildir/ anger att lokal leverans ska använda Maildir-format i mottagarens hemkatalog.

2-2. Begränsa lokala mottagare och aktivera TLS

local_recipient_maps begränsar lokal leverans till operativsystemkonton och adresser som finns i aliasdatabasen. Det minskar risken för att okända lokala mottagare accepteras.

[root@hostname ~]# vi /etc/postfix/main.cf

Originalartikeln aktiverar följande värde.

main.cf【Före förändring】


#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

main.cf【efter ändringen】


local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

Därefter läggs en storleksgräns och en äldre TLS-konfiguration till i main.cf.

main.cf


### MAIL SIZE (20 Mbyte.)
message_size_limit = 20971520
### TLS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key

smtpd_tls_cert_file och smtpd_tls_key_file ska peka på Postfix-serverns giltiga certifikat och skyddade privata nyckel. Konfigurera även aktuella TLS-protokoll, certifikatkedja och automatisk förnyelse.

Följande artikel innehåller ett äldre exempel på certifikathantering. Använd i produktion en aktuell metod avsedd för e-postserverns namn.

Installera Apache HTTP Server säkert på CentOS

2-3. Konfigurera submission och SASL

Submission-tjänsten används när autentiserade e-postklienter lämnar meddelanden till servern, normalt på port 587.

[root@hostname ~]# vi /etc/postfix/master.cf

Obs: Tjänstdefinitionen finns i master.cf, inte i main.cf.

Originalartikeln gör följande ändring.

master.cf【Före förändring】


#submission inet n - n - - smtpd
~förkortning~
#-o smtpd_sasl_auth_enable=yes
~förkortning~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~förkortning~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~förkortning~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

master.cf【efter ändringen】


submission inet n - n - - smtpd
~förkortning~
-o smtpd_sasl_auth_enable=yes
~förkortning~
-o smtpd_client_restrictions=permit_sasl_authenticated
~förkortning~
-o smtpd_sender_restriction=permit_sasl_authenticated
~förkortning~
-o smtpd_recipient_restrictions=permit_sasl_authenticated


Konfigurationen efter ändringen saknar ett uttryckligt avslutande reject och innehåller dessutom ett misstänkt direktivnamn i singular. Den får inte användas oförändrad. Installera de SASL-paket som krävs av den valda och verifierade autentiseringsmetoden.

[root@hostname ~]# yum -y install cyrus-sasl
[root@hostname ~]# yum -y install cyrus-sasl-plain
[root@hostname ~]# yum -y install cyrus-sasl-md5
[root@hostname ~]# yum -y install cyrus-sasl-devel

Originalproceduren konfigurerar saslauthd för autentisering mot lokala Unix-konton. Bedöm om en separat identitetskälla är lämpligare och se till att lösenord endast skickas över obligatorisk TLS.

[root@hostname ~]# vi /etc/sysconfig/saslauthd

Den bevarade konfigurationen byter mekanism till shadow.

saslauthd


#MECH=pam
MECH=shadow

2-4. Aktivera saslauthd

Aktivera saslauthd om den verifierade SASL-konfigurationen använder denna tjänst.

[root@hostname ~]# systemctl enable saslauthd
[root@hostname ~]# systemctl is-enabled saslauthd
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep saslauthd
saslauthd.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-5. Kontrollera den konfigurerade tjänsten

Validera Postfix-konfigurationen och starta därefter tjänsten i en isolerad testmiljö.

[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root      1838  0.0  0.1  89744  2080 ?        Ss   18:14   0:00 /usr/libexec/postfix/master -w
postfix   1839  0.0  0.3  89848  3988 ?        S    18:14   0:00 pickup -l -t unix -u
postfix   1840  0.0  0.3  89916  4008 ?        S    18:14   0:00 qmgr -l -t unix -u
root      1845  0.0  0.0 112824   968 pts/0    S+   18:15   0:00 grep --color=auto postfix

Processerna visar att Postfix har startat, men bevisar inte att reläpolicy, autentisering, TLS eller leverans fungerar säkert. Testa uttryckligen både tillåtna och nekade reläförsök innan tjänsten exponeras. Originalproceduren stoppar tjänsten efter kontrollen.

[root@hostname ~]# /usr/sbin/postfix stop

2-6. Automatisk start

En produktionsserver ska normalt använda den systemd-enhet som Postfix-paketet tillhandahåller och aktivera den för automatisk start.

Originalartikeln kontrollerar /usr/lib/systemd/system/postfix.service och skapar annars den egna enheten nedan. Skapa inte en parallell, ogranskad enhet på en aktuell installation; använd vendor-enheten och en systemd-override vid behov.

[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service

Den bevarade enhetsfilen innehåller följande.

[Unit]
#Beskrivning.
Description=Postfix
#Kontroll före och efter utförandet.
#Before=xxx.service
After=syslog.target network.target

[Service]
#Användar- och gruppbeteckning
User=root
Group=root
#När den är aktiverad, sätts statusen till Aktiverad.
Type=oneshot
RemainAfterExit=yes
#Starta, stoppa och ladda om.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload

[Install]
#Motsvarande inställningar för Runlevel 3.
WantedBy=multi-user.target

Därefter aktiverades enheten med systemctl och systemd-konfigurationen lästes in på nytt.

[root@hostname ~]# systemctl enable postfix
[root@hostname ~]# systemctl is-enabled postfix
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postfix
postfix.service                                enabled
[root@hostname ~]# systemctl daemon-reload

3. Sammanfattning

Den historiska proceduren installerar Postfix 2.10.1, konfigurerar domänidentitet och lokala mottagare samt aktiverar TLS, submission och SASL.

Exemplet är inte produktionsklart: reläreglerna måste avslutas säkert, autentiseringen och TLS-policyn uppdateras och DNS, SPF, DKIM, DMARC, PTR, loggar och köövervakning verifieras.

Använd en plattform och Postfix-version som stöds och testa både leverans och missbruksfall innan servern ansluts till internet.