CentOS'ta Postfix: eski kurulum ve 2026 güvenliği


Yayın tarihi:

Güncelleme:


Teknik makaleler > CentOS'ta Postfix: eski kurulum ve 2026 güvenliği

2026 bağlamı ve güvenli kullanım

Sonuç: Postfix yalnızca başlatıldığında üretim posta aktarımı tamamlanmaz. Desteklenen bir işletim sistemi ve Postfix derlemesi, doğru DNS kimliği, kısıtlı geçiş politikası, kimlik doğrulamalı gönderim, modern TLS, sertifika yenileme, kötüye kullanım kontrolleri, günlük kaydı, kuyruk izleme ve test edilmiş teslim edilebilirlik gerektirir.

Ne öğreneceksiniz

  • Orijinal CentOS 7/Postfix 2.10.1 izlenecek kılavuzunun yapılandırdığı şey.
  • Gönderim kimlik doğrulamasının neden yanlışlıkla açık geçiş oluşturmaması gerekir?
  • Mevcut bir dağıtım için hangi TLS, SASL, DNS, güvenlik duvarı ve operasyon kararlarının yeniden tasarlanması gerekir.

Bu kimin için: Kopyala ve yapıştır genel posta sunucusu arayan yeni başlayanlar değil, devralınan bir Postfix runbook'unu değerlendiren yöneticiler.

2026 bağlamı: CentOS 7 ve listelenen paket sürümleri eskidir. Aşağıdaki eski yapılandırma, güvenli bir güncel posta hizmeti olarak doğrulanmamıştır ve değiştirilmeden dağıtılmamalıdır; özellikle gönderim kısıtlamalarının açık bir reddetme politikasıyla sonuçlandığını doğrulayın, kimlik bilgilerini koruyun ve incelenmemiş bir birim icat etmek yerine paketlenmiş systemd hizmetini kullanın.

Güvenlik notu: Orijinal makaledeki komutlar ve yapılandırma örnekleri mevcut üretim ortamında yeniden çalıştırılmamıştır. Desteklenen sürümleri, yedeklemeleri, erişim kontrollerini ve geri alma adımlarını uygulamadan önce ayrı bir test ortamında doğrulayın.

Başlıca resmî kaynaklar

Genel bakış

Bu, Postfix'i CentOS'a yüklemek ve başlatmak için gereken ilk yapılandırma prosedürüdür. Bilgiler CentOS7 kullanıldığı varsayımına dayanmaktadır. Bunu teslim portunda ayarlamak istiyoruz.

Dovecot'u da yüklerseniz, ayrıca bkz.

Postfix posta göndermek için, Dovecot ise posta almak içindir. E-posta gönderme işlemini gerçekleştirmeniz gerekiyorsa Postfix'i, e-posta almak istiyorsanız da Dovecot'u yükleyin.

Versiyonlar aşağıdaki gibidir.

CentOS sürümü7.6 (1810)
Postfix sürümü2.10.1

İçindekiler

  1. yükleyin
  2. Kurulum ayrıntıları
  3. özet

1. yükleyin

Bu bölümde Postfix'in kurulumdan başlatmaya kadar olan yapılandırması açıklanmaktadır.

1-1. Postfix kurulumu

Yum komutunu kullanarak Postfix kurulumunu gerçekleştirin. Çalışmayı kök kullanıcı olarak gerçekleştirin.

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

1-2. bootstrap kontrolü

Başarılı bir şekilde kurulup kurulmadığını kontrol etmek için başlatmayı kontrol edin.

[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

Yukarıda açıklandığı gibi postfix kullanıcısı olarak çalışan herhangi bir işlem tamamdır. Dur.

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

2. Kurulum ayrıntıları

2-1. başlatma

Postfix'in ilk yapılandırması. Temel olarak, Postfix yapılandırması "/etc/postfix/main.cf" içinde tanımlanmıştır, bu nedenle main.cf dosyasını değiştireceğiz.

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

Aşağıdaki şekilde değiştirin.

main.cf【Değişimden önce】


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

main.cf【değişiklikten sonra】


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

myhostname", "mydomain" ve "myorigin" Bunlar alan adı ile ilgili ayarlardır. 'example.com' olarak değiştirilen kısım sunucunun alan adına ayarlanmalıdır. "https://example.com/"un "example.com" kısmı alan adıdır.

E-posta adresi username@example.com'dur.

'mynetworks' ağ ile ilgili bir ayardır. Bu, postfix'e bağlanabilecek bir IP adresidir. Posta sunucusu farklı bir sunucuya bağlıysa, bu değeri uygun şekilde değiştirin.

'home_mailbox' e-posta dizinidir. Gönderilen e-postayı kaydedin.

2-2. OS kullanıcısı veya $alias_maps içinde tanımlanmamışsa reddet

OS kullanıcısı ve $alias_maps içinde listelenen kullanıcılarla e-posta göndermek için ayarları yapılandırın. OS kullanıcısı useradd ile eklenen bir kullanıcıdır.

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

Aşağıdaki şekilde değiştirin.

main.cf【Değişimden önce】


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

main.cf【değişiklikten sonra】


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

main.cf dosyasının sonuna aşağıdakileri ekleyin.

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' ve 'smtpd_tls_key_file' ortama göre ayarlanmalıdır. Sunucu sertifikasının depolandığı yolu ayarlayın.

SSL ayarları önceden gereklidir, bu nedenle SSL ayarlarını yapmadıysanız, lütfen önce SSL ayarlarını yapın. Lütfen aşağıdakilere bakınız.

Apache HTTP Server'ı CentOS'a güvenli kurma

2-3. Postfix gönderim bağlantı noktası ayarları

Gönderim bağlantı noktasını kullanarak e-posta göndermek için ayarları yapılandırın.

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

Not: Düzenlenecek dosyanın 'main.cf' değil 'master.cf' olduğuna dikkat edin, bu nedenle dosya adları benzerdir.

Aşağıdaki şekilde değiştirin.

master.cf【Değişimden önce】


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

master.cf【değişiklikten sonra】


submission inet n - n - - smtpd
~KISALTMA~
-o smtpd_sasl_auth_enable=yes
~KISALTMA~
-o smtpd_client_restrictions=permit_sasl_authenticated
~KISALTMA~
-o smtpd_sender_restriction=permit_sasl_authenticated
~KISALTMA~
-o smtpd_recipient_restrictions=permit_sasl_authenticated


SASL kimlik doğrulaması için gerekli kütüphaneleri yum ile yükleyin.

[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

Kimlik doğrulama için UNIX hesaplarını kullanmak üzere saslauthd'yi düzenleyin.

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

Aşağıdaki şekilde değiştirin.

saslauthd


#MECH=pam
MECH=shadow

2-4. SASL'yi Etkinleştirme

SASL'yi etkinleştirin.

[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. bootstrap kontrolü

Postfix'in başladığını kontrol edin.

[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

Yukarıda açıklandığı gibi postfix kullanıcısı olarak çalışan bir süreç varsa, yapılandırma başarıyla tamamlanmıştır ve çalışmaktadır. Başlangıç onaylandıktan sonra durma zamanı gelmiştir.

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

2-6. Otomatik başlatma ayarı

Son olarak, zorunlu olmamakla birlikte, sunucu her yeniden başlatıldığında Postfix'i başlatmak zordur, bu nedenle sunucu başlatıldığında Postfix'in otomatik olarak başlaması için bir ayar yapın. Ayrıca systemctl komutuna da kaydolur. Lütfen bu prosedürün CentOS7 için olduğunu unutmayın, bu nedenle CentOS7'den başka bir şey kullanıyorsanız, bununla başa çıkmak için Service komutunu kullanmanız gerekecektir.

'/usr/lib/systemd/system/postfix.service' dosyasının var olup olmadığını kontrol edin. Eğer yoksa, aşağıdaki prosedürü kullanarak bir 'postfix.service' oluşturun. Kök kullanıcı olarak çalıştırın.

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

Aşağıdaki bilgiler verilmiştir.

[Unit]
#Açıklama.
Description=Postfix
#Yürütme öncesi ve sonrası kontrol.
#Before=xxx.service
After=syslog.target network.target

[Service]
#Kullanıcı ve grup tanımlama
User=root
Group=root
#Etkinleştirildikten sonra durumu Etkinleştirildi olarak ayarlayın.
Type=oneshot
RemainAfterExit=yes
#Başlat, durdur ve yeniden yükle.
ExecStart=/usr/sbin/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix reload

[Install]
#Çalışma seviyesi 3 eşdeğer ayarları.
WantedBy=multi-user.target

Ardından, systemctl komutu ile kayıt olun.

[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. özet

Postfix kurulduğunda gereken ilk yapılandırmayı açıkladık.

Kurulumu oldukça zordu, bu nedenle Postfix'i kuruyorsanız lütfen buna bakın.

Umarız bu açıklama yararlı olmuştur.