Linux'ta Sanal Etki Alanı Kullanıcılarıyla Postfix ve Dovecot Nasıl Yapılandırılır - Bölüm 2


Bu serinin önceki makalesinde phpMyAdmin kullanarak posta sunucusu veritabanını güvenli bir şekilde nasıl kurup yöneteceğinizi açıklamıştık.

Gereklilik:

  1. Postfix Posta Sunucusunu ve Dovecot'u MariaDB ile Kurma – Bölüm 1

Artık e-posta gönderip almayı gerçeğe dönüştürecek dahili programları yapılandırmanın zamanı geldi: Postfix ve Dovecot (sırasıyla giden ve gelen e-postaları yönetmek için).

Postfix Posta Sunucusunu Yapılandırma

Postfix'i yapılandırmaya başlamadan önce buradaki kılavuz sayfalarına göz atmanız ve "Yeni Postfix kullanıcıları için bilgiler" başlıklı bölüme özellikle vurgu yapmanız faydalı olacaktır. . Bunu yaparsanız, bu eğitimle birlikte takip etmeyi daha kolay bulacaksınız.

Kısaca söylemek gerekirse Postfix için iki yapılandırma dosyası bulunduğunu bilmelisiniz:

  1. /etc/postfix/main.cf (Postfix yapılandırma parametreleri, daha fazla ayrıntı için man 5 postconf'a bakın).
  2. /etc/postfix/master.cf (Postfix ana arka plan programı yapılandırması, daha fazla ayrıntı için man 5 master'a bakın).

/etc/postfix/main.cf dosyasında aşağıdaki satırları bulun (veya gerekiyorsa ekleyin) ve bunların aşağıda belirtilen değerlerle eşleştiğinden emin olun:


append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Sonraki üç ayar özel öneme sahiptir. Sarı ile belirtilen dosyalarda Postfix'in Domains_tbl, Users_tbl ve Alias_tbl tablolarına erişimini yapılandıracağız:


virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf

Oluşturduğunuzdan ve aşağıdaki içerikleri bunlara eklediğinizden emin olduğunuz sürece yukarıdan farklı dosya adları seçebileceğinizi unutmayın. Her durumda, Şifreniz'i Bölüm 1'de dba kullanıcısı için seçtiğiniz şifreyle değiştirin veya MariaDB'yi de kullanabilirsiniz. kullanıcı ve şifre için kök kimlik bilgileri aşağıdadır.

Ayrıca, Bölüm 1'de oluşturulan e-posta sunucusu veritabanı ve tablo adlarının tamamen aynı olduğundan emin olun.

/etc/postfix/mariadb-vdomains.cf'de:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'

/etc/postfix/mariadb-vusers.cf dosyasında:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'

/etc/postfix/mariadb-valias.cf'de:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'

Son olarak bu dosyaların izinlerini 640 olarak değiştirmeyi unutmayın:


chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf

Ve root kullanıcısının ve postfix grubunun sahipliği:


chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf

Daha sonra, güvenli bağlantıları etkinleştirmek için /etc/postfix/master.cf dosyasında aşağıdaki ayarların yorumlanmadığından (veya gerekirse eklendiğinden) emin olmamız gerekir:


submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp

showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
#virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

Not: -o seçeneğiyle başlayan satırlardaki girintiler önemlidir; aksi takdirde postfix kontrolü bir hata döndürecektir:

Değişiklikleri kaydetmeden önce dosyanın altına aşağıdaki satırları ekleyin:


dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

Bu noktada Postfix'in veritabanı tablolarına ve Bölüm 1'de oluşturduğumuz alan adlarına, hesaplara ve takma adlara erişiminin olup olmadığını kontrol etmek önemlidir.

Bunu yapmak için, Postfix'in işlem sırasında bakacağı tablolarla iletişimi test etmek için bir yardımcı program olan postmap komutunu kullanacağız, ancak her şeyden önce postfix'i yeniden başlatmamız gerekecek:


systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-valias.cf

Aşağıdaki görselde veritabanındaki mevcut kayıtlar için 1 değerinin döndürüldüğünü görüyoruz. Aksi halde ekrana hiçbir şey görüntülenmez. Takma ad kontrolü durumunda, takma adın eşlendiği gerçek e-posta hesabının döndürüldüğünü unutmayın:

Her e-posta hesabı için belirlenen kimlik bilgilerine göre DOĞRULAMADIĞIMIZI, yalnızca Postfix'in veritabanındaki bu kayıtları algılama yeteneğini test ettiğimizi unutmayın.

Bu nedenle, yukarıdakilerden farklı bir çıktı alırsanız mariadb-vdomains.cf, mariadb-vusers.cf'de geçerli bir kullanıcı/şifre çifti kullandığınızdan emin olun. mariadb-valias.cf (veya bu dosyalara ne ad vermeyi seçerseniz seçin).

Dovecot'u Yapılandırma

Bir IMAP/POP3 sunucusu olarak Dovecot, kullanıcılara Posta Kullanıcı Aracısı (MUA veya postalarına erişmeye yönelik birkaç örnek vermek gerekirse, Thunderbird veya Outlook gibi istemci olarak da bilinir).

Başlamak için, e-postaları yönetecek bir kullanıcı ve grup oluşturalım (e-posta hesaplarımız bir sistem kullanıcısıyla ilişkili olmadığından buna ihtiyacımız olacak). Kullanılmadığı ve yüksek bir sayı olduğu sürece başka bir UID ve GID (aşağıda yaptığımız gibi 5000 dışında) kullanabilirsiniz:


groupadd -g 5000 vmail 
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Dovecot'un ayarları birkaç konfigürasyon dosyasına bölünmüştür (aşağıdaki satırların yorumsuz olduğundan emin olun ve/veya bunları aşağıda belirtilen ayarlarla eşleşecek şekilde düzenleyin).

/etc/dovecot/dovecot.conf'da:


!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf

/etc/dovecot/conf.d/10-auth.conf dosyasında (yalnızca SQL yoluyla kimlik doğrulamayı etkinleştirin ve diğer kimlik doğrulama yöntemlerini açıklamasız bırakın):


disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext

/etc/dovecot/conf.d/auth-sql.conf.ext dizininde (e-postaları / içindeki alanadiniz.com adlı bir dizinde saklayacağımızı unutmayın) home/vmail, mevcut değilse oluşturmanız gerekir. Bizim durumumuzda bu alan adı için e-postaları yönetmek için mkdir /home/vmail/linuxnewz.com'u kullandık):


passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}

Kullanıcı hesaplarına yönelik bireysel gelen kutuları, söz konusu hesaplara ilişkin e-postalar ilk alındığında oluşturulacaktır.

/etc/dovecot/conf.d/10-mail.conf'da:


mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
  inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl

/etc/dovecot/conf.d/10-master.conf'da:


service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  unix_listener auth-userdb {
   mode = 0600
   user = vmail
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

/etc/dovecot/conf.d/10-ssl.conf'da (CA tarafından imzalanmış bir sertifika kullanmayı planlıyorsanız sertifikayı ve anahtar yollarını değiştirin):


ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

/etc/dovecot/dovecot-sql.conf.ext alanına veritabanı bilgilerinizi ve Bölüm 1'de oluşturulan yönetici kullanıcının kimlik bilgilerini girin.

Önemli: Şifreniz bir yıldız işareti (#) içeriyorsa, bağlantı dizesini aşağıdaki örnekte gösterildiği gibi eklemeniz gerekecektir:


driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';

Ayrıca /etc/dovecot/conf.d/10-logging.conf dosyasında Dovecot'un günlük kaydını Postfix'ten ayrı olacak şekilde yapılandırabilirsiniz:


log_path = /var/log/dovecot.log

Son olarak, Dovecot günlüğünün dovecot kullanıcısı için erişilebilir olduğundan emin olun:


chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log

Postifix Yapılandırmasını Doğrulayın ve Düzeltin ve Güvenlik Duvarında SMTP, POP3 ve IMAP'yi Etkinleştirin

Postfix ve/veya Dovecot'u yapılandırırken herhangi bir sorunla karşılaşırsanız, tüm yapılandırma dosyalarını yardım istemek için göndermek yerine, aşağıdakileri içeren bir yapılandırma özeti (yalnızca yorumsuz satırlar) alabilirsiniz:


postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot

Ayrıca, e-posta gelen kutularının yalnızca vmail tarafından okunabildiğinden emin olun:


chown –R vmail:vmail /home/vmail

Yapılandırma dosyaları ayrıca vmail ve dovecot kullanıcıları tarafından da okunabilmelidir:


chown -R vmail:dovecot /etc/dovecot 
chmod -R o-rwx /etc/dovecot 

Son olarak, güvenlik duvarı üzerinden SMTP, POP3 ve IMAP'i etkinleştirdiğinizden emin olun:


firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent

Thunderbird'ü Postfix için E-posta İstemcisi olarak Yapılandırma

E-posta iletişimlerinde kullanılan bağlantı noktalarına güvenlik duvarı aracılığıyla erişimi güvence altına aldıktan sonra, bir e-posta istemcisi yapılandırmanın zamanı geldi. [email  ve ona karşılık gelen şifreyi, mail.linuxnewz.com'u IMAP (veya POP3) ve SMTP sunucusu olarak kullanarak şu adreslere e-posta göndermeye ve almaya hazırız: ve böyle bir hesaptan:

Güvenilir bir 3. taraf CA tarafından imzalanmayan bir sertifika kullandığınız için gösterilen uyarı mesajını güvenle göz ardı edebilirsiniz:

Kısa bir test e-postası oluşturalım ve Gönder'e tıklayalım:

Giden sunucu için kendinden imzalı sertifikayı kabul etmeniz istendiğinde, bunu daha önce olduğu gibi onaylayın:

Son olarak, az önce gönderilen e-postayı alıp almadığınızı görmek için hedef e-postaya gidin. Öyleyse, yanıtlayın ve kaynak e-posta gelen kutusuna geri teslim edilip edilmediğine bakın (aksi halde /var/log/maillog adresindeki Postfix günlüğüne veya /var adresindeki Dovecot günlüğüne bakın) Sorun giderme bilgileri için /log/dovecot.log):

Artık çalışan bir Postfix ve Dovecot e-posta sunucunuz var ve e-posta gönderip almaya başlayabilirsiniz.

Özet

Bu yazımızda Postfix ve Dovecot'u Linux sunucunuzdaki e-posta trafiğini yönetecek şekilde nasıl yapılandıracağınızı açıkladık. Bu makalede belirtildiği gibi bir şey çalışmıyorsa Postfix ve Dovecot belgelerini kontrol etmek için zaman ayırdığınızdan emin olun.

Postfix posta sunucusu kurmanın kolay bir iş olmasa da her sistem yöneticisi için ödüllendirici bir deneyim olduğunu lütfen unutmayın.

Dokümanları inceledikten sonra kendinizi hala Postfix ve/veya Dovecot ile ilgili sorunlarla karşılaşırsanız, aşağıdaki yorum formunu kullanarak bize bir not bırakmaktan çekinmeyin; memnuniyetle yardımcı oluruz. size yardımcı olabilir (bu makalede özetlendiği gibi postconf ve doveconf kullanılarak alınan Postfix ve Dovecot yapılandırmasını çevrimiçi depolama hizmetine yüklemeyi unutmayın).