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 CentOS7.6 (1810)
Verzia služby Postfix2.10.1

Obsah

  1. Inštalácia
  2. Historický postup konfigurácie Postfixu
  3. Zhrnutie

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.

main.cf【Pred zmenou】


#
#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/

main.cf【po zmene】


#
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.

main.cf【Pred zmenou】


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

main.cf【po zmene】


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.

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

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.

master.cf【Pred zmenou】


#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

master.cf【po zmene】


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.

saslauthd


#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.