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


Datum för offentliggörande:

Uppdaterad:


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

2026 status och säker användning

Slutsats: En produktionsposttransport är inte klar när Postfix bara startar. Den behöver ett operativsystem och Postfix-bygge som stöds, korrekt DNS-identitet, begränsad reläpolicy, autentiserad inlämning, modern TLS, certifikatförnyelse, missbrukskontroller, loggning, köövervakning och testad leveransbarhet.

Vad du kommer att lära dig

  • Vad den ursprungliga CentOS 7/Postfix 2.10.1-genomgången konfigurerades.
  • Varför får inlämningsautentisering inte skapa ett öppet relä av misstag.
  • Vilka TLS-, SASL-, DNS-, brandväggs- och driftbeslut måste göras om för en aktuell implementering.

Vem är det här för: Administratörer som utvärderar en ärvd Postfix-runbook, inte nybörjare som söker en kopiera-och-klistra offentlig e-postserver.

2026-kontext: CentOS 7 och de angivna paketversionerna är föråldrade. Den äldre konfigurationen nedan har inte validerats som en säker aktuell e-posttjänst och får inte distribueras oförändrad; i synnerhet, verifiera inlämningsbegränsningar slutar i en explicit avvisningspolicy, skydda referenser och använd den paketerade systemd-tjänsten istället för att uppfinna en enhet som inte har granskats.

Säkerhetsanmärkning: Kommandona och konfigurationsexemplen i den ursprungliga artikeln har inte körts om i en aktuell produktionsmiljö. Verifiera versioner som stöds, säkerhetskopior, åtkomstkontroller och återställningssteg i en separat testmiljö innan du använder dem.

Viktiga officiella källor

Översikt.

Detta är den inledande konfigurationsproceduren som krävs för att installera Postfix på CentOS och starta det. Informationen bygger på antagandet att CentOS7 används. Vi skulle vilja ställa in det här i inlämningshamnen.

Om du också installerar Dovecot, se också.

Postfix är till för att skicka e-post och Dovecot är till för att ta emot e-post. Om du behöver skicka e-post installerar du Postfix, och om du också vill ta emot e-post installerar du Dovecot.

Versionerna är följande.

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

Innehållsförteckning

  1. installera
  2. Uppsättningsinformation
  3. sammanfattning

1. installera

Det här avsnittet beskriver konfigurationen av Postfix från installation till uppstart.

1-1. Installation av Postfix

Installera Postfix med hjälp av kommandot yum. Utför arbetet som rotanvändare.

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

1-2. kontroll av uppstartsklämma

För att kontrollera att den har installerats framgångsrikt kan du kontrollera starten.

[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

Alla processer som körs som postfix-användare enligt beskrivningen ovan är OK. Stopp.

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

2. Uppsättningsinformation

2-1. Initialisering

Initial konfiguration av Postfix. Postfix konfiguration beskrivs i princip i "/etc/postfix/main.cf", så vi kommer att ändra main.cf.

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

Ändra på följande sätt.

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", "mydomain" och "myorigin" Detta är inställningar som rör domänen. Den del som ändras till "example.com" ska anges till serverns domännamn. Delen "example.com" i "https://example.com/" är domännamnet.

E-postadressen är username@example.com.

"mynetworks" är en nätverksrelaterad inställning. Detta är en IP-adress som kan anslutas till postfix. Om e-postservern är kopplad till en annan server, ändra det här värdet i enlighet med detta.

"home_mailbox" är e-postkatalogen. Spara det skickade e-postmeddelandet.

2-2. OS-användare eller förkasta om det inte är definierat i $alias_maps.

Konfigurera inställningarna för att skicka e-post med OS-användaren och de användare som anges i $alias_maps. En OS-användare är en användare som läggs till med useradd.

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

Ändra på följande sätt.

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 =

Lägg till följande i slutet av 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 ställas in i enlighet med miljön. Ange sökvägen där servercertifikatet lagras.

SSL-inställningar krävs i förväg, så om du inte har ställt in SSL-inställningar bör du göra det först. Se följande.

Installera Apache HTTP Server säkert på CentOS

2-3. Inställningar för Postfix inlämningsport

Konfigurera inställningarna för att skicka e-postmeddelanden med hjälp av inlämningsporten.

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

Obs: Observera att filen som ska redigeras är "master.cf", inte "main.cf", så filnamnen liknar varandra.

Ändra på följande sätt.

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


Installera de nödvändiga biblioteken för SASL-autentisering med yum.

[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

Redigera saslauthd för att använda UNIX-konton för autentisering.

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

Ändra på följande sätt.

saslauthd


#MECH=pam
MECH=shadow

2-4. Aktivering av SASL

Aktivera SASL.

[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. kontroll av uppstartsklämma

Kontrollera att Postfix startar.

[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

Om det finns en process som körs som postfix-användare enligt beskrivningen ovan har konfigurationen slutförts framgångsrikt och den körs. När startskottet har bekräftats är det dags att sluta.

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

2-6. Inställning för automatisk start

Slutligen, även om det inte är obligatoriskt, är det svårt att starta Postfix varje gång servern startas om, så lägg in en inställning så att Postfix startar automatiskt när servern startar. Den registrerar också kommandot systemctl. Observera att den här proceduren gäller för CentOS7, så om du använder något annat än CentOS7 måste du använda kommandot Service för att hantera detta.

Kontrollera om "/usr/lib/systemd/system/postfix.service" finns. Om det inte finns någon, skapa en "postfix.service" med hjälp av följande procedur. Kör som root-användare.

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

Följande information tillhandahålls.

[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

Registrera dig sedan med kommandot systemctl.

[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

Vi har beskrivit den första konfigurationen som krävs när Postfix installeras.

Det var ganska svårt att sätta upp, så om du bygger Postfix bör du läsa det här.

Tack för att du tittade på till slutet.