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 CentOS | 7.6 (1810) |
|---|---|
| Različica programa Postfix | 2.10.1 |
Kazalo vsebine
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.
#
#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/
#
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.
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
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.
### 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.
#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
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.
#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.