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
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.
#
#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/
#
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.
#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 =
main.cf dosyasının sonuna aşağıdakileri ekleyin.
### 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.
#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
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.
#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.