Android

Pasang dan konfigurasi postfix dan dovecot

CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS

CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS

Isi kandungan:

Anonim

Ini adalah jawatan kedua kami Menyediakan dan mengkonfigurasi siri pelayan mel. Dalam siaran ini, kami akan menunjukkan kepada anda cara memasang dan mengkonfigurasi Postfix dan Dovecot, dua komponen utama sistem mel kami.

Postfix adalah ejen pemindahan mel (MTA) sumber terbuka, perkhidmatan yang digunakan untuk menghantar dan menerima e-mel. Dovecot adalah pelayan IMAP / POP3 dan dalam persediaan kami, ia juga akan mengendalikan penghantaran tempatan dan pengesahan pengguna.

Tutorial ini ditulis untuk Ubuntu 16.04, namun langkah yang sama dengan pengubahsuaian kecil harus berfungsi pada versi Ubuntu yang lebih baru.

Prasyarat

Sebelum meneruskan tutorial ini, pastikan anda log masuk sebagai pengguna dengan keistimewaan sudo.

Pasang Postfix dan Dovecot

Pakej Dovecot dalam repositori lalai Ubuntu sudah ketinggalan zaman. Untuk memanfaatkan modul imap_sieve kami akan memasang Dovecot dari repositori komuniti Dovecot.

Tambahkan kunci GPG repositori kepada sumber yang anda suka dengan perintah wget berikut:

wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -

Dayakan repositori komuniti Dovecot dengan menggunakan arahan berikut:

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 apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql

Konfigurasi Postfix

Kami akan menyediakan Postfix untuk menggunakan peti mel dan domain maya.

Mulailah dengan membuat fail konfigurasi sql yang akan mengarahkan postfix cara mengakses pangkalan data MySQL, yang dibuat di bahagian pertama siri ini.

sudo mkdir -p /etc/postfix/sql

Buka editor teks anda dan buat fail berikut:

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

Sebaik sahaja fail konfigurasi SQL dibuat, kemas kini fail konfigurasi postfix utama untuk memasukkan maklumat mengenai domain maya, pengguna, dan alias yang disimpan dalam pangkalan data MySQL.

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" Perintah postconf memaparkan nilai sebenar parameter konfigurasi, mengubah nilai parameter konfigurasi, atau memaparkan maklumat konfigurasi lain mengenai sistem pos Postfix.

Ejen penghantaran tempatan akan menghantar emel masuk ke peti mel pengguna. Jalankan arahan berikut untuk menetapkan perkhidmatan LMTP Dovecot sebagai pengangkutan penghantaran lalai:

sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

Tetapkan parameter TL menggunakan yang dihasilkan sebelum ini. Sambungkan sijil SSL:

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'

Konfigurasikan tetapan SMTP yang disahkan dan serahkan pengesahan kepada Dovecot:

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 'broken_sasl_auth_clients = yes' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'

Kami juga perlu mengedit master.cf fail konfigurasi induk Postfix dan membolehkan pelabuhan penyerahan ( 587 ) dan smtps port ( 465 ).

Buka fail dengan editor teks anda dan komen / edit baris berikut:

/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

Mulakan semula perkhidmatan posfix untuk perubahan berlaku.

sudo systemctl restart postfix

Pada ketika ini anda telah berjaya mengkonfigurasi perkhidmatan Postfix.

Konfigurasikan Dovecot

Dalam bahagian ini, kami akan mengkonfigurasi Dovecot agar sepadan dengan persediaan kami. Pastikan anda mengedit garisan yang disorot dalam warna kuning.

Mulakan dengan mengkonfigurasi fail dovecot-sql.conf.ext yang mengarahkan Dovecot bagaimana untuk mengakses pangkalan data dan bagaimana untuk mencari maklumat mengenai akaun e-mel.

/etc/dovecot/dovecot-sql.conf.ext

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'

Jangan lupa menggunakan bukti kelayakan MySQL (dbname, pengguna dan kata laluan).

Seterusnya, edit fail conf.d/10-mail.conf dan edit pembolehubah berikut:

/etc/dovecot/conf.d/10-mail.conf

… 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…

Untuk membuat kerja pengesahan, buka conf.d/10-auth.conf , edit baris berikut dan masukkan fail auth-sql.conf.ext :

/etc/dovecot/conf.d/10-auth.conf

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

Buka fail conf.d/10-master.conf , dan ubahsuainya seperti berikut:

/etc/dovecot/conf.d/10-master.conf

… 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 } }…

Buka conf.d/10-ssl.conf dan dayakan SSL / TLS.

/etc/dovecot/conf.d/10-ssl.conf

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

Buka fail conf.d/20-imap.conf dan aktifkan pemalam imap_quota :

/etc/dovecot/conf.d/20-imap.conf

… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…

Buka fail conf.d/20-lmtp.conf dan editnya seperti berikut:

/etc/dovecot/conf.d/20-lmtp.conf

… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…

Tentukan peti mel lalai dalam fail conf.d/20-lmtp.conf :

/etc/dovecot/conf.d/15-mailboxes.conf

… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…

Terdapat dua jenis saiz kuota yang berlainan, satu ditetapkan untuk seluruh domain dan peti mel pengguna yang lain. Di bahagian sebelumnya dalam siri ini, kami telah mendayakan sokongan kuota di PostfixAdmin yang bermaksud maklumat kuota akan disimpan dalam pangkalan data PostfixAdmin.

Sekarang kita perlu mengkonfigurasi Dovecot untuk menyambung ke pangkalan data, untuk mengendalikan had kuota dan untuk menjalankan skrip yang menghantar mel kepada pengguna apabila kuota pengguna melebihi batas yang ditetapkan. Untuk melakukannya buka fail conf.d/90-quota.conf dan conf.d/90-quota.conf seperti berikut:

/etc/dovecot/conf.d/90-quota.conf

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 }

Kami juga perlu memberitahu dovecot bagaimana untuk mengakses kamus kuota SQL. Buka fail dovecot-dict-sql.conf.ext dan edit baris berikut:

/etc/dovecot/dovecot-dict-sql.conf.ext

… 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 # } # }… Pastikan anda menggunakan kelayakan MySQL yang betul (dbname, pengguna dan kata laluan).

Buat skrip shell berikut yang akan menghantar e-mel kepada pengguna jika kuota melebihi had yang ditetapkan:

/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

Buat skrip yang boleh dilaksanakan dengan menjalankan perintah chmod berikut:

sudo chmod +x /usr/local/bin/quota-warning.sh

Akhir sekali mulakan semula perkhidmatan dovecot untuk perubahan yang berlaku.

sudo systemctl restart dovecot

Kesimpulannya

Sekarang anda harus mempunyai sistem mel berfungsi sepenuhnya. Di bahagian seterusnya dalam siri ini, kami akan menunjukkan kepada anda cara memasang dan menyepadukan Rspamd.

pelayan pos postfix dovecot

Siaran ini adalah sebahagian daripada Penyediaan dan mengkonfigurasi siri pelayan mel.

Jawatan lain dalam siri ini:

• Sediakan pelayan mel dengan PostfixAdmin • Pasang dan konfigurasi Postfix dan Dovecot • Pasang dan Mengintegrasikan Rspamd • Pasang dan Konfigurasi Webmail Roundcube