Postfix na CentOS: sprievodca staršou inštaláciou s bezpečnostnými poznámkami na rok 2026
Dátum vydania:
Aktualizované:
Technické články > Postfix na CentOS: sprievodca staršou inštaláciou s bezpečnostnými poznámkami na rok 2026
Stav a bezpečné používanie v roku 2026
Záver: Samotné spustenie Postfixu nestačí na pripravenosť produkčného prenosu e-mailov. Vyžaduje podporovaný systém a verziu Postfixu, správnu identitu DNS, ochranu pred otvoreným prenosom, overené odosielanie, moderné TLS, obnovu certifikátov, ochranu pred zneužitím, protokoly, dohľad nad frontom a testovanie doručiteľnosti.
Čo sa naučíte
- Čo nastavoval pôvodný postup pre CentOS 7 a Postfix 2.10.1.
- Prečo overovanie na porte submission nesmie neúmyselne vytvoriť otvorený relay.
- Ktoré rozhodnutia o TLS, SASL, DNS, firewalle a prevádzke treba pri aktuálnom nasadení navrhnúť odznova.
Pre koho je to určené: Administrátori, ktorí posudzujú zdedený prevádzkový postup pre Postfix, nie začiatočníci hľadajúci hotový návod na verejný poštový server.
Kontext v roku 2026: CentOS 7 aj uvedené verzie balíkov sú zastarané. Historická konfigurácia nižšie nebola overená ako bezpečná súčasná poštová služba a nesmie sa nasadiť bez úprav. Skontrolujte najmä to, že pravidlá pre port submission sa končia výslovným odmietnutím neoprávneného prenosu, chráňte prihlasovacie údaje a používajte jednotku systemd dodanú balíkom.
Bezpečnostná poznámka: Príkazy a príklady konfigurácie v pôvodnom článku neboli znovu spustené v aktuálnom produkčnom prostredí. Pred ich použitím overte podporované verzie, zálohy, prístupové oprávnenia a postup obnovy v oddelenom testovacom prostredí.
Hlavné oficiálne zdroje
Prehľad
Tento historický postup inštaluje a spúšťa Postfix v systéme CentOS 7 a nastavuje port submission na odosielanie správ klientmi.
Po zabezpečení Postfixu pokračujte konfiguráciou Dovecotu.
Postfix zabezpečuje prenos správ cez SMTP. Dovecot sprístupňuje poštové schránky klientom cez IMAP alebo POP3 a môže Postfixu poskytovať overovanie SASL. Tieto služby sa preto navzájom nenahrádzajú.
V pôvodnom prostredí boli použité tieto verzie:
| Verzia systému CentOS | 7.6 (1810) |
|---|---|
| Verzia služby Postfix | 2.10.1 |
Obsah
1. Inštalácia
Táto časť zachytáva inštaláciu a prvé spustenie Postfixu v pôvodnom prostredí.
1-1. Inštalácia Postfixu
Pôvodný systém nainštaloval Postfix pomocou správcu yum z administrátorského shellu.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix
1-2. Prvé overenie spustenia
Po inštalácii pôvodný postup službu spustil a skontroloval jej procesy.
[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
Ak výstup obsahuje procesy spustené pod používateľom postfix, prvé spustenie prebehlo úspešne. Pred ďalšou konfiguráciou službu zastavte.
[root@hostname ~]# /usr/sbin/postfix stop
2. Historický postup konfigurácie Postfixu
2-1. Základná konfigurácia
Hlavné nastavenia Postfixu v tomto postupe sa nachádzajú v súbore "/etc/postfix/main.cf". Výsledná konfigurácia zahŕňa aj predvolené hodnoty a ďalšie súbory, preto ju kontrolujte nástrojmi dodanými s nainštalovaným balíkom.
[root@hostname ~]# vi /etc/postfix/main.cf
Pôvodný postup vykonal nasledujúce zmeny.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~skrátenie~
#
#mydomain = domain.tld
~skrátenie~
#myorigin = $myhostname
#myorigin = $mydomain
~skrátenie~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~skrátenie~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~skrátenie~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~skrátenie~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
#
myhostname = example.com
#myhostname = virtual.domain.tld
~skrátenie~
#
mydomain = example.com
~skrátenie~
#myorigin = $myhostname
myorigin = $mydomain
~skrátenie~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~skrátenie~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~skrátenie~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~skrátenie~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/
Položky "myhostname", "mydomain" a "myorigin" určujú identitu a doménu poštového systému. V zástupnej adrese "https://example.com/" je doménovou časťou hodnota "example.com". Nahraďte ju skutočným plne kvalifikovaným názvom a doménou servera, ktoré sú v súlade s DNS a poštovými záznamami.
Príklad výslednej adresy miestneho používateľa je "username@example.com".
Položka "mynetworks" určuje siete, ktorým Postfix dôveruje pri prenose pošty. Uveďte iba nevyhnutné rozsahy; príliš široká hodnota môže vytvoriť otvorený relay.
Položka "home_mailbox" určuje formát a umiestnenie lokálne doručenej pošty. Hodnota "Maildir/" používa adresár Maildir v domovskom adresári príjemcu.
2-2. Lokálni príjemcovia a TLS
Položka "local_recipient_maps" v historickom príklade povoľuje lokálne doručenie používateľom operačného systému a adresám uvedeným v "$alias_maps". Neznámi lokálni príjemcovia sa majú odmietnuť.
[root@hostname ~]# vi /etc/postfix/main.cf
Pôvodný postup odkomentoval nasledujúce nastavenie.
#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 koniec súboru "main.cf" pridal limit veľkosti správy a historické nastavenia TLS.
### 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
Položky "smtpd_tls_cert_file" a "smtpd_tls_key_file" musia odkazovať na platný reťazec certifikátu a chránený súkromný kľúč. Naplánujte automatickú obnovu a overte, že Postfix po obnove načíta nový certifikát a kľúč.
Súvisiaci článok o Apache obsahuje iba historický príklad certifikátu, nie aktuálny postup pre poštový server. Použite dokumentáciu certifikačnej autority a Postfixu zodpovedajúcu danému nasadeniu.
Historický príklad vytvorenia certifikátu TLS
2-3. Nastavenie portu submission
Port submission slúži klientom na overené odosielanie správ. Jeho obmedzenia musia povoliť iba zamýšľaných overených používateľov a všetky ostatné pokusy výslovne odmietnuť.
[root@hostname ~]# vi /etc/postfix/master.cf
Poznámka: V tomto kroku sa upravuje súbor "master.cf", nie podobne pomenovaný "main.cf".
Nasledujúca historická konfigurácia je zachovaná iba ako referencia.
#submission inet n - n - - smtpd
~skrátenie~
#-o smtpd_sasl_auth_enable=yes
~skrátenie~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~skrátenie~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~skrátenie~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
submission inet n - n - - smtpd
~skrátenie~
-o smtpd_sasl_auth_enable=yes
~skrátenie~
-o smtpd_client_restrictions=permit_sasl_authenticated
~skrátenie~
-o smtpd_sender_restriction=permit_sasl_authenticated
~skrátenie~
-o smtpd_recipient_restrictions=permit_sasl_authenticated
Pôvodný postup nainštaloval knižnice na overovanie SASL pomocou 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
Následne nastavil saslauthd tak, aby overoval účty systému UNIX.
[root@hostname ~]# vi /etc/sysconfig/saslauthd
Mechanizmus zmenil nasledujúcim spôsobom.
#MECH=pam
MECH=shadow
2-4. Povolenie SASL
Pôvodný postup povolil službu saslauthd pri štarte systému. Pred použitím overte podporovaný mechanizmus, ochranu prihlasovacích údajov, TLS a výsledné obmedzenia relayu.
[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. Overenie spustenia
Po konfigurácii pôvodný postup znova spustil Postfix a skontroloval jeho procesy.
[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
Procesy pod používateľom postfix potvrdzujú iba spustenie služby. Nepotvrdzujú správne smerovanie, ochranu pred otvoreným relayom, DNS, TLS ani doručovanie. Pred sprístupnením SMTP skontrolujte protokoly a vykonajte riadený test celého toku; potom testovaciu službu zastavte.
[root@hostname ~]# /usr/sbin/postfix stop
2-6. Automatické spustenie služby
Postfix povoľte pomocou jednotky systemd dodanej balíkom operačného systému. Názvy jednotiek a príkazy sa medzi distribúciami líšia; nevytvárajte duplicitnú definíciu služby.
Pôvodný postup skontroloval súbor "/usr/lib/systemd/system/postfix.service" a pri jeho absencii vytvoril vlastný súbor "postfix.service" pod účtom root. Táto vlastná jednotka je zachovaná iba ako historický materiál.
[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service
Do súboru zapísal nasledujúcu konfiguráciu.
[Unit]
#Popis.
Description=Postfix
#Kontrola pred a po vykonaní.
#Before=xxx.service
After=syslog.target network.target
[Service]
#Označenie používateľa a skupiny
User=root
Group=root
#Po aktivácii nastavte stav na možnosť Aktivované.
Type=oneshot
RemainAfterExit=yes
#Spustenie, zastavenie a opätovné načítanie.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload
[Install]
#Ekvivalentné nastavenia úrovne Runlevel 3.
WantedBy=multi-user.target
Jednotku následne zaregistroval a povolil pomocou systemctl. V aktuálnom systéme použite jednotku dodanú balíkom a overte jej správanie pri štarte, zastavení aj opätovnom načítaní.
[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. Zhrnutie
Historický postup zahŕňa inštaláciu balíka, základnú identitu a smerovanie, lokálnych príjemcov, TLS, port submission, SASL a správu služby.
Súčasný poštový server navyše potrebuje podporované balíky, jednoznačnú ochranu pred otvoreným relayom, správne DNS záznamy, obnovu certifikátov, ochranu prihlasovacích údajov, monitorovanie zneužitia a poštového frontu aj testovanie doručiteľnosti.
Konfiguráciu nižšie preto používajte iba na pochopenie starého prostredia, nie ako šablónu na nové verejné nasadenie.
Technické články
Profil
Kontakt