Postfix v sistemu CentOS: podedovani postopek in varnostne opombe za leto 2026


Datum objave:

Posodobljeno:


Tehnični članki > Postfix v sistemu CentOS: podedovani postopek in varnostne opombe za leto 2026

Stanje in varna uporaba v letu 2026

Sklep: Produkcijski poštni sistem ni pripravljen že s tem, da se Postfix zažene. Potrebuje podprt operacijski sistem in različico Postfixa, pravilno identiteto DNS, strogo omejeno posredovanje pošte, overjeno oddajo, sodoben TLS, obnovo certifikatov, zaščito pred zlorabami, dnevnike, spremljanje čakalne vrste in preizkušeno dostavljivost.

Kaj boste izvedeli

  • Kaj je nastavil prvotni postopek za CentOS 7 in Postfix 2.10.1.
  • Zakaj overjanje pri oddaji pošte ne sme pomotoma ustvariti odprtega posrednika SMTP.
  • Katere odločitve glede TLS, SASL, DNS, požarnega zidu in obratovanja je treba za sodobno okolje zasnovati na novo.

Komu je članek namenjen? Skrbnikom, ki ocenjujejo podedovani priročnik za Postfix, ne začetnikom, ki iščejo navodila za neposredno kopiranje v javni poštni strežnik.

Opomba za leto 2026: CentOS 7 in navedene različice paketov niso več podprte. Spodnja konfiguracija ni potrjena kot varna sodobna poštna storitev in je ne uporabite nespremenjene. Posebej preverite, da se omejitve oddaje končajo z izrecno zavrnitvijo, zaščitite poverilnice in uporabite storitev systemd, ki jo zagotavlja paket operacijskega sistema.

Varnostna opomba: Ukazi in konfiguracijski primeri iz prvotnega članka niso bili znova preizkušeni v sodobnem produkcijskem okolju. Pred uporabo v ločenem preizkusnem okolju preverite podprte različice, izdelajte varnostne kopije ter določite nadzor dostopa in postopek povrnitve.

Uradni viri

Pregled

Ta zgodovinski postopek opisuje namestitev in začetno nastavitev Postfixa v sistemu CentOS 7, vključno z vrati za oddajo pošte. Ne predstavlja sodobne produkcijske zasnove.

Po varni nastavitvi Postfixa preverite še postopek povezave z Dovecotom.

Postfix prenaša sporočila SMTP, Dovecot pa odjemalcem omogoča dostop do poštnih predalov prek IMAP ali POP3. Za sprejemanje pošte z interneta so poleg obeh storitev potrebni tudi pravilni zapisi DNS, pravila dostave in varnostni nadzor.

V prvotnem okolju sta bili uporabljeni naslednji različici:

Različica sistema CentOS7.6 (1810)
Različica programa Postfix2.10.1

Kazalo vsebine

  1. Namestitev
  2. Podedovani postopek konfiguracije Postfixa
  3. Povzetek

1. Namestitev

Ta razdelek prikazuje podedovani postopek od namestitve paketa do prvega zagona.

1-1. Namestitev Postfixa

V prvotnem okolju je skrbnik namestil Postfix z upravljalnikom paketov yum.

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

1-2. Preverjanje zagona

Po namestitvi je bil opravljen začetni preizkus zagona.

[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

Če izpis pokaže procese uporabnika postfix, je začetni zagon uspel. Pred nadaljnjim urejanjem konfiguracije storitev ustavite.

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

2. Podedovani postopek konfiguracije Postfixa

2-1. Osnovne nastavitve

Glavne nastavitve tega postopka so v datoteki "/etc/postfix/main.cf". Učinkovita konfiguracija lahko vključuje tudi privzete vrednosti in druge datoteke, zato jo preverite z orodji, ki jih zagotavlja nameščeni paket Postfix.

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

Prvotni postopek je uporabil naslednje spremembe.

main.cf【Pred spremembo】


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

main.cf【po spremembi】


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

"myhostname", "mydomain" in "myorigin" določajo identiteto strežnika in domeno izvora. Vrednost "example.com" nadomestite z dejansko poštno domeno ter jo uskladite z zapisi DNS in imenom gostitelja.

V tem primeru imajo lokalni naslovi obliko username@example.com.

"mynetworks" določa zaupanja vredna omrežja, ki jim Postfix dovoli posredovanje. Vnesite samo izrecno potrebne naslove; preširoka vrednost lahko ustvari odprt posrednik.

"home_mailbox" določa obliko in mesto lokalnega poštnega predala. Vrednost Maildir/ shrani sporočila v imenik Maildir uporabnikovega domačega imenika.

2-2. Preverjanje lokalnih prejemnikov

Nastavitev local_recipient_maps omeji lokalne prejemnike na račune operacijskega sistema in naslove, določene v $alias_maps. S tem Postfix prej zavrne pošto za neobstoječe lokalne prejemnike.

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

Prvotni postopek je uporabil naslednjo spremembo.

main.cf【Pred spremembo】


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

main.cf【po spremembi】


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

Na konec datoteke main.cf je dodal še naslednje nastavitve.

main.cf


### MAIL SIZE (20 MB.)
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" in "smtpd_tls_key_file" morata kazati na veljavno verigo certifikatov in ustrezno zaščiten zasebni ključ. Načrtujte samodejno obnovo ter preverite, da Postfix po obnovi naloži nove datoteke.

Povezani članek o Apacheju vsebuje zgodovinski primer certifikata, ne sodobnega recepta za poštni certifikat. Uporabite dokumentacijo izdajatelja certifikata in različice Postfixa v svojem okolju.

TLS v podedovanem postopku namestitve Apacheja v sistemu CentOS

2-3. Nastavitve vrat za oddajo pošte

Naslednji podedovani primer omogoči storitev za oddajo pošte in overjanje SASL. Pred javno uporabo ponovno zasnujte omejitve ter preverite, da ne dopuščajo neoverjenega posredovanja.

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

Urejena je datoteka "master.cf", ne "main.cf".

Prvotni postopek je uporabil naslednjo spremembo.

master.cf【Pred spremembo】


#submission inet n - n - - smtpd
~okrajšava~
#-o smtpd_sasl_auth_enable=yes
~okrajšava~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~okrajšava~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~okrajšava~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

master.cf【po spremembi】


submission inet n - n - - smtpd
~okrajšava~
-o smtpd_sasl_auth_enable=yes
~okrajšava~
-o smtpd_client_restrictions=permit_sasl_authenticated
~okrajšava~
-o smtpd_sender_restriction=permit_sasl_authenticated
~okrajšava~
-o smtpd_recipient_restrictions=permit_sasl_authenticated


V zgodovinskem okolju so bili paketi za overjanje SASL nameščeni z 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

Nato je bil saslauthd nastavljen za overjanje z računi UNIX.

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

Uporabljena je bila naslednja nastavitev.

saslauthd


#MECH=pam
MECH=shadow

2-4. Omogočanje storitve SASL

Storitev saslauthd je bila omogočena z naslednjimi ukazi.

[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. Preverjanje zagona

Po spremembah preverite, ali se Postfix zažene.

[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

Proces uporabnika postfix potrdi le, da se je storitev zagnala. Ne dokazuje pravilnega usmerjanja, omejitev posredovanja, DNS, TLS ali dostave; pred izpostavitvijo SMTP preglejte dnevnike in izvedite nadzorovane celovite preizkuse.

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

2-6. Samodejni zagon

V sodobnem okolju omogočite enoto systemd, ki jo dobavi paket operacijskega sistema. Imena enot in ukazi se med distribucijami razlikujejo; ne ustvarjajte podvojene definicije storitve.

Spodnji koraki prikazujejo lastno enoto iz prvotnega postopka, če paketna datoteka "/usr/lib/systemd/system/postfix.service" ni obstajala. Primer je zgodovinski in ni priporočilo za sodobno namestitev.

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

Uporabljena je bila naslednja vsebina.

[Unit]
#Opis.
Description=Postfix
#Nadzor pred in po izvedbi.
#Before=xxx.service
After=syslog.target network.target

[Service]
#Imenovanje uporabnikov in skupin
User=root
Group=root
#Ko je aktivirano, nastavite stanje na Aktivirano.
Type=oneshot
RemainAfterExit=yes
#Zagon, zaustavitev in ponovno polnjenje.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload

[Install]
#Enakovredne nastavitve na ravni Runlevel 3.
WantedBy=multi-user.target

Enota je bila nato omogočena z ukazom 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. Povzetek

Podedovani postopek zajema namestitev paketa, osnovno identiteto in usmerjanje, TLS, povezavo z Dovecotom ter zagon storitve.

Sodobni poštni strežnik poleg tega zahteva podprte pakete, zaščito pred odprtim posredovanjem, pravilne zapise DNS, samodejno obnovo certifikatov, spremljanje zlorab in preverjanje dostavljivosti.

Stare konfiguracije ne prenesite neposredno v produkcijo; vsak parameter preverite v dokumentaciji trenutno podprte različice.