9. Настройка MAIL (postfix, dovecot)
İçindekiler:
Bu, bir posta sunucusu serisini ayarlama ve yapılandırma işlemimizin ikinci gönderi. Bu yazıda, posta sistemimizin iki ana bileşeni olan Postfix ve Dovecot'un nasıl kurulacağını ve yapılandırılacağını göstereceğiz.
Postfix, e-posta göndermek ve almak için kullanılan bir açık kaynak posta aktarım aracısıdır (MTA). Dovecot bir IMAP / POP3 sunucusudur ve kurulumumuzda yerel teslimat ve kullanıcı kimlik doğrulaması da gerçekleştirilecektir.
Bu öğretici Ubuntu 16.04 için yazılmıştır, ancak küçük değişikliklerle aynı adımlar Ubuntu'nun daha yeni sürümlerinde çalışmalıdır.
Ön şartlar
Bu eğiticiye devam etmeden önce sudo ayrıcalıklarına sahip bir kullanıcı olarak oturum açtığınızdan emin olun.
Postfix ve Dovecot Kurulumu
Ubuntu varsayılan depolarındaki dovecot paketleri eski.
imap_sieve
modülünden yararlanmak için
imap_sieve
Dovecot topluluk deposundan kuracağız.
Depo GPG anahtarını aşağıdaki wget komutuyla apt kaynakları anahtarlığınıza ekleyin:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Aşağıdaki komutu kullanarak Dovecot topluluk deposunu etkinleştirin:
echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
sudo apt update
sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql
Postfix Yapılandırması
Postfix'i sanal posta kutularını ve alan adlarını kullanacak şekilde ayarlayacağız.
Postfix'e bu serinin ilk bölümünde oluşturulan MySQL veritabanına nasıl erişileceğini bildiren
sql
yapılandırma dosyalarını oluşturarak başlayın.
sudo mkdir -p /etc/postfix/sql
Metin düzenleyicinizi açın ve aşağıdaki dosyaları oluşturun:
/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
SQL yapılandırma dosyaları oluşturulduktan sonra, MySQL veritabanında depolanan sanal etki alanları, kullanıcılar ve takma adlar hakkında bilgi içerecek şekilde ana postfix yapılandırma dosyasını güncelleyin.
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
Postconf komutu, yapılandırma parametrelerinin gerçek değerlerini görüntüler, yapılandırma parametresi değerlerini değiştirir veya Postfix posta sistemi ile ilgili diğer yapılandırma bilgilerini görüntüler.
Yerel dağıtım aracısı gelen e-postaları kullanıcıların posta kutularına gönderir. Dovecot'un LMTP hizmetini varsayılan posta teslimi aktarımı olarak ayarlamak için aşağıdaki komutu çalıştırın:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
TL parametrelerini önceden oluşturulan SSL sertifikasını şifreleyelim:
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'
Kimliği doğrulanmış SMTP ayarlarını yapılandırın ve kimlik doğrulamasını Dovecot'e verin:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
Ayrıca Postfix master yapılandırma dosyasını
master.cf
düzenlememiz ve gönderim portunu (
587
) ve smtps portunu (
465
) etkinleştirmemiz gerekecek.
Dosyayı metin düzenleyicinizle açın ve aşağıdaki satırları açın / düzenleyin:
/etc/postfix/master.cf
submission inet n - y - - 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_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING
Değişikliklerin etkili olması için postfix hizmetini yeniden başlatın.
sudo systemctl restart postfix
Bu noktada Postfix hizmetini başarıyla yapılandırdınız.
Dovecot'u Yapılandır
Bu bölümde Dovecot'u kurulumumuza uyacak şekilde yapılandıracağız. Sarı ile vurgulanan çizgileri düzenlediğinizden emin olun.
dovecot-sql.conf.ext
veritabanına nasıl erişileceğini ve e-posta hesapları hakkındaki bilgileri nasıl bulacağını bildiren
dovecot-sql.conf.ext
dosyasını yapılandırarak başlayın.
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'
Doğru MySQL kimlik bilgilerini (dbname, kullanıcı ve şifre) kullanmayı unutmayın.
Ardından,
conf.d/10-mail.conf
dosyasını düzenleyin ve aşağıdaki değişkenleri düzenleyin:
… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…
Kimlik doğrulamanın çalışması için
conf.d/10-auth.conf
, aşağıdaki satırları düzenleyin ve
auth-sql.conf.ext
dosyasını
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
conf.d/10-master.conf
dosyasını açın ve aşağıdaki gibi değiştirin:
… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…
conf.d/10-ssl.conf
ve SSL / TLS'yi etkinleştirin.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
conf.d/20-imap.conf
dosyasını açın ve
imap_quota
eklentisini etkinleştirin:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
conf.d/20-lmtp.conf
dosyasını açın ve aşağıdaki gibi düzenleyin:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
conf.d/20-lmtp.conf
dosyasında varsayılan Posta Kutularını tanımlayın:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
İki farklı kota boyutu türü vardır; bunlardan biri alanın tamamı için ve diğeri kullanıcı posta kutusu için ayarlanır. Bu serinin önceki bölümünde, PostfixAdmin'de kota desteğini zaten etkinleştirmiştik, bu kota bilgilerinin PostfixAdmin veritabanında saklanacağı anlamına geliyor.
Şimdi Dovecot'u veritabanına bağlanacak, kota sınırlarını işleyecek ve kullanıcının kotası belirtilen sınırı aştığında kullanıcıya posta gönderen bir komut dosyası çalıştıracak şekilde yapılandırmamız gerekiyor. Bunu yapmak için
conf.d/90-quota.conf
dosyasını açın ve aşağıdaki gibi değiştirin:
plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }
Dovecot'a kota SQL sözlüğüne nasıl erişileceğini de söylememiz gerekiyor.
dovecot-dict-sql.conf.ext
dosyasını açın ve aşağıdaki satırları düzenleyin:
… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }…
Doğru MySQL kimlik bilgilerini kullandığınızdan emin olun (dbname, kullanıcı ve şifre).
Kotası belirtilen bir sınırı aşarsa kullanıcıya bir e-posta gönderecek aşağıdaki kabuk komut dosyasını oluşturun:
/usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF
Aşağıdaki
chmod
komutunu çalıştırarak komut dosyasını yürütülebilir yapın:
sudo chmod +x /usr/local/bin/quota-warning.sh
Son olarak değişikliklerin etkili olması için dovecot servisini yeniden başlatın.
sudo systemctl restart dovecot
Sonuç
Şimdiye kadar tamamen işlevsel bir posta sistemine sahip olmalısınız. Bu serinin bir sonraki bölümünde, Rspamd'in nasıl kurulacağını ve entegre edileceğini göstereceğiz.
posta sunucusu postfix dovecotBu yayın, bir posta sunucusu serisinin kurulması ve yapılandırılmasının bir parçasıdır.
Bu serideki diğer gönderiler:
• PostfixAdmin ile posta sunucusu kurma • Postfix ve Dovecot'u yükleme ve yapılandırma • Rspamd Yükleme ve Entegre Etme • Roundcube Webmail'i Yükleme ve YapılandırmaYanıt Hattı: Windows Gezgini'nin (veya Dosya Gezgini'nin) Gezinme bölmesini yapılandırın
Windows Gezgini Gezgini bölmesi, klasörler arasında kolay geçiş sağlar sabit sürücün. Bevaau, Windows forumuna bu kullanışlı aracı yapılandırma hakkında sorular sordu.
E-posta hesabınızı Outlook istemcisi ile otomatik olarak yapılandırın Otomatik Yapılandırma
Otomatik Yapılandırma Yardımcı Programı, e-posta hesabınızı Windows Mail ve Windows Live Mail`de otomatik olarak oluşturmanızı sağlar
Windows Phone 7`de Exchange ActiveSync`i kurun ve yapılandırın
Bu eğitim, Windows Phone 7 aygıtınızda Exchange ActiveSync`in nasıl kurulacağını anlatır, Office 365 hesabımı kullanarak bir örnek için