CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS
Isi kandungan:
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.
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:
… 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
:
… 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:
… 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.
… 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
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Buka fail
conf.d/20-lmtp.conf
dan editnya seperti berikut:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Tentukan peti mel lalai dalam fail
conf.d/20-lmtp.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:
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:
… 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 dovecotSiaran 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 RoundcubeLog Masuk dan Konfigurasi Penghala
Gunakan tetapan penghala lalai anda untuk mendapatkan akses sebelum mengkonfigurasi rangkaian.
Toshiba menghantar kami A605-P210, yang mempunyai MSRP semasa, atau harga senarai, $ 1399. Konfigurasi midlevel ini untuk A605 mengemas pemproses Intel Core 2 Duo SU9400 1.4GHz, 3GB daripada 333MHz DDR2 RAM, pemacu DVD-RW, grafik bersepadu dari Intel, dan cakera keras 300GB dengan versi Home Premium Vista 32-bit. Sebenarnya, perkakasan tidak semua berbeza daripada apa yang kita lihat di Portege R600 Toshiba. Tetapi yang terakhir, sebuah mesin yang lebih tinggi, menjual lebih kurang $ 700, tetapi
[Bacaan lanjut: Pemilihan kami untuk komputer riba PC terbaik]
Alat Penanda Aras Windows membolehkan anda menilai prestasi komputer anda dan membandingkan konfigurasi dan penarafan anda dengan rakan-rakan anda
Auslogics BenchTown