INSTALL DAN KONFIGURASI MAIL SERVER POSTFIX & DOVECOT DI CENTOS 7
Daftar Isi:
Ini adalah pos kedua dari Pengaturan dan konfigurasi seri server mail kami. Dalam posting ini kami akan menunjukkan kepada Anda bagaimana menginstal dan mengkonfigurasi Postfix dan Dovecot, dua komponen utama sistem email kami.
Postfix adalah agen transfer surat sumber terbuka (MTA), layanan yang digunakan untuk mengirim dan menerima email. Dovecot adalah server IMAP / POP3 dan dalam pengaturan kami juga akan menangani pengiriman lokal dan otentikasi pengguna.
Tutorial ini ditulis untuk Ubuntu 16.04, namun langkah yang sama dengan modifikasi kecil harus bekerja pada versi Ubuntu yang lebih baru.
Prasyarat
Sebelum melanjutkan dengan tutorial ini, pastikan Anda masuk sebagai pengguna dengan hak istimewa sudo.
Instal Postfix dan Dovecot
Paket Dovecot di repositori default Ubuntu sudah usang. Untuk memanfaatkan modul
imap_sieve
kita akan menginstal Dovecot dari repositori komunitas Dovecot.
Tambahkan kunci GPG repositori ke keyring sumber apt Anda dengan perintah wget berikut:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Aktifkan repositori komunitas Dovecot menggunakan perintah 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 mengatur Postfix untuk menggunakan kotak surat dan domain virtual.
Mulailah dengan membuat file konfigurasi
sql
yang akan menginstruksikan postfix cara mengakses database MySQL, dibuat di bagian pertama dari seri ini.
sudo mkdir -p /etc/postfix/sql
Buka editor teks Anda dan buat file-file 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'
Setelah file konfigurasi SQL dibuat, perbarui file konfigurasi postfix utama untuk memasukkan informasi tentang domain virtual, pengguna, dan alias yang disimpan dalam database 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 menampilkan nilai aktual dari parameter konfigurasi, mengubah nilai parameter konfigurasi, atau menampilkan informasi konfigurasi lain tentang sistem surat Postfix.
Agen pengiriman lokal akan mengirimkan email yang masuk ke kotak surat pengguna. Jalankan perintah berikut untuk mengatur layanan LMTP Dovecot sebagai transportasi pengiriman email default:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Setel parameter TL menggunakan Mari kita mengenkripsi sertifikat 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 pengaturan SMTP yang diautentikasi dan serahkan otentikasi ke 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_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
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'
Kita juga perlu mengedit file konfigurasi master postfix
master.cf
dan mengaktifkan port pengiriman (
587
) dan port smtps (
465
).
Buka file dengan editor teks Anda dan batalkan komentar / 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
Mulai ulang layanan postfix agar perubahan diterapkan.
sudo systemctl restart postfix
Pada titik ini Anda telah berhasil mengonfigurasi layanan Postfix.
Konfigurasikan Dovecot
Di bagian ini kami akan mengonfigurasi Dovecot agar sesuai dengan pengaturan kami. Pastikan Anda mengedit garis yang disorot dengan warna kuning.
Mulailah dengan mengonfigurasi file
dovecot-sql.conf.ext
yang menginstruksikan Dovecot cara mengakses database dan cara menemukan informasi tentang akun email.
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 untuk menggunakan kredensial MySQL yang benar (dbname, pengguna, dan kata sandi).
Selanjutnya, edit file
conf.d/10-mail.conf
dan edit variabel 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 otentikasi berfungsi, buka
conf.d/10-auth.conf
, edit baris berikut dan sertakan file
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Buka file
conf.d/10-master.conf
, dan modifikasi sebagai 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 aktifkan 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 file
conf.d/20-imap.conf
dan aktifkan plugin
imap_quota
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Buka file
conf.d/20-lmtp.conf
dan edit sebagai berikut:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Tentukan kotak surat default di file
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Ada dua jenis ukuran kuota, satu diatur untuk seluruh domain dan lainnya per kotak pesan pengguna. Pada bagian sebelumnya dari seri ini kami telah mengaktifkan dukungan kuota di PostfixAdmin yang berarti informasi kuota akan disimpan dalam database PostfixAdmin.
Sekarang kita perlu mengkonfigurasi Dovecot untuk terhubung ke database, untuk menangani batas kuota dan menjalankan skrip yang mengirim email ke pengguna ketika kuota pengguna melebihi batas yang ditentukan. Untuk melakukannya buka file
conf.d/90-quota.conf
dan modifikasi sebagai 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 }
Kita juga perlu memberi tahu dovecot cara mengakses kamus SQL kuota. Buka file
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 kredensial MySQL yang benar (dbname, pengguna, dan kata sandi).
Buat skrip shell berikut yang akan mengirim email kepada pengguna jika kuota melebihi batas yang ditentukan:
/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 dapat dieksekusi dengan menjalankan perintah
chmod
berikut:
sudo chmod +x /usr/local/bin/quota-warning.sh
Terakhir, restart layanan dovecot agar perubahan diterapkan.
sudo systemctl restart dovecot
Kesimpulan
Sekarang Anda harus memiliki sistem surat yang berfungsi penuh. Di bagian selanjutnya dari seri ini, kami akan menunjukkan kepada Anda bagaimana menginstal dan mengintegrasikan Rspamd.
mail server postfix dovecotPosting ini adalah bagian dari Menyiapkan dan mengonfigurasi seri server mail.
Posting lain dalam seri ini:
• Mengatur server email dengan PostfixAdmin • Instal dan konfigurasikan Postfix dan Dovecot • Instal dan Integrasikan Rspamd • Instal dan Konfigurasikan Roundcube WebmailConfigFox: Konfigurasikan dan tweak Firefox tentang: pengaturan konfigurasi
ConfigFox adalah freeware untuk mengelola Firefox tentang: konfigurasi pengaturan tersembunyi dengan mudah. Ini membawa semua konfigurasi canggih yang dikelompokkan dengan baik untuk kemudahan penggunaan.
Konfigurasikan Windows Live Writer untuk Blogger dan tingkatkan menggunakan Plugin
Artikel ini memberi tahu Anda cara Mengkonfigurasi Penulis Windows Live untuk Blogger dan meningkatkannya menggunakan Plugins tersedia secara gratis.
Instal dan konfigurasikan roundcube webmail
Roundcube adalah klien email IMAP berbasis web dengan antarmuka pengguna yang sangat intuitif dan modern yang ditulis dalam PHP. Tutorial ini mencakup langkah-langkah yang diperlukan untuk menginstal dan mengkonfigurasi Roundcube Webmail.