Cara Konfigurasi Postfix dan Dovecot dengan Pengguna Domain Virtual di Linux - Part 2
Pada artikel sebelumnya di seri ini kami telah menjelaskan cara mengatur dan mengelola database server email dengan aman menggunakan phpMyAdmin.
Persyaratan:
- Instal Server Email Postfix dan Dovecot dengan MariaDB – Bagian 1
Sekarang saatnya mengkonfigurasi program internal yang akan membuat pengiriman dan penerimaan email menjadi kenyataan: Postfix dan Dovecot (masing-masing untuk menangani email keluar dan masuk).
Mengonfigurasi Server Email Postfix
Sebelum Anda mulai mengonfigurasi Postfix, ada baiknya Anda melihat halaman manualnya di sini, dengan memberikan penekanan khusus pada bagian berjudul “Informasi untuk pengguna baru Postfix“ . Jika ya, Anda akan lebih mudah mengikuti tutorial ini.
Singkatnya, Anda harus tahu bahwa ada dua file konfigurasi untuk Postfix:
- /etc/postfix/main.cf (Parameter konfigurasi Postfix, lihat man 5 postconf untuk detail lebih lanjut).
- /etc/postfix/master.cf (Konfigurasi daemon master Postfix, lihat man 5 master untuk rincian lebih lanjut).
Di /etc/postfix/main.cf
, cari (atau tambahkan, jika perlu) baris berikut dan pastikan baris tersebut cocok dengan nilai yang ditunjukkan di bawah ini:
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
Tiga pengaturan berikutnya sangat penting. Pada file yang ditandai dengan warna kuning, kita akan mengkonfigurasi akses Postfix ke tabel Domains_tbl, Users_tbl, dan Alias_tbl:
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
Perhatikan bahwa Anda dapat memilih nama file yang berbeda di atas, selama Anda memastikan untuk membuatnya dan memasukkan konten berikut ke dalamnya. Dalam setiap kasus, ganti Kata Sandi Anda dengan kata sandi yang Anda pilih untuk pengguna dba di Bagian 1, atau Anda juga dapat menggunakan MariaDB kredensial root untuk pengguna dan kata sandi di bawah.
Selain itu, pastikan Anda menggunakan nama database server email dan tabel yang sama persis yang dibuat di Bagian 1.
Di /etc/postfix/mariadb-vdomains.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'
Di /etc/postfix/mariadb-vusers.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'
Di /etc/postfix/mariadb-valias.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'
Terakhir, jangan lupa untuk mengubah izin file ini menjadi 640:
chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf
Dan kepemilikan kepada pengguna root dan grup postfix:
chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf
Selanjutnya, untuk mengaktifkan koneksi aman kita perlu memastikan pengaturan berikut tidak dikomentari (atau ditambahkan, jika perlu) di /etc/postfix/master.cf
:
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
Catatan: Indentasi pada baris yang diawali dengan opsi -o
sangat penting; jika tidak, pemeriksaan postfix akan menghasilkan kesalahan:
Sebelum Anda menyimpan perubahan, tambahkan baris berikut di bagian bawah file:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
Pada titik ini penting untuk memeriksa apakah Postfix memiliki akses ke tabel database dan domain, akun, dan alias yang kita buat di Bagian 1.
Untuk melakukannya, kita akan menggunakan perintah postmap, sebuah utilitas untuk menguji komunikasi dengan tabel yang akan dicari Postfix selama pengoperasian, namun pertama-tama kita harus memulai ulang postfix:
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
Pada gambar di bawah kita dapat melihat bahwa untuk record yang ada di database, 1 dikembalikan. Jika tidak, tidak ada yang ditampilkan kembali ke layar. Dalam kasus pemeriksaan alias, perhatikan bahwa akun email sebenarnya yang dipetakan ke alias dikembalikan:
Perhatikan bahwa kami TIDAK mengautentikasi terhadap kredensial yang ditetapkan untuk setiap akun email, kami hanya menguji kemampuan Postfix untuk mendeteksi catatan tersebut dalam database.
Jadi, jika Anda mendapatkan keluaran yang berbeda dari di atas, pastikan Anda menggunakan pasangan pengguna/kata sandi yang valid di mariadb-vdomains.cf, mariadb-vusers.cf, dan mariadb-valias.cf (atau apa pun nama file tersebut).
Mengonfigurasi Dovecot
Sebagai server IMAP/POP3, Dovecot menyediakan cara bagi pengguna melalui Agen Pengguna Email (MUA, atau juga dikenal sebagai klien), seperti Thunderbird atau Outlook, adalah beberapa contoh untuk mengakses email mereka.
Untuk memulai, mari buat pengguna dan grup untuk menangani email (kita memerlukan ini karena akun email kita tidak dikaitkan dengan pengguna sistem). Anda dapat menggunakan UID dan GID lain (selain 5000 seperti yang kami lakukan di bawah) asalkan tidak digunakan dan jumlahnya banyak:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Pengaturan untuk Dovecot dibagi menjadi beberapa file konfigurasi (pastikan baris berikut tidak diberi komentar dan/atau edit agar sesuai dengan pengaturan yang ditunjukkan di bawah).
Di /etc/dovecot/dovecot.conf
:
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf
Di /etc/dovecot/conf.d/10-auth.conf
(hanya aktifkan autentikasi melalui SQL dan tinggalkan komentar pada metode autentikasi lainnya):
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
Di /etc/dovecot/conf.d/auth-sql.conf.ext
(perhatikan bahwa kami akan menyimpan email dalam direktori bernama domainanda.com di dalam / home/vmail, yang perlu Anda buat jika tidak ada. Dalam kasus kami, kami melakukan mkdir /home/vmail/linuxnewz.com untuk mengelola email untuk domain tersebut):
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}
Kotak masuk individual untuk akun pengguna akan dibuat saat email untuk akun tersebut pertama kali diterima.
Di /etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl
Di /etc/dovecot/conf.d/10-master.conf
:
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 {
}
}
Di /etc/dovecot/conf.d/10-ssl.conf
(ganti sertifikat dan jalur kunci jika Anda berencana menggunakan sertifikat yang ditandatangani oleh CA):
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
Di /etc/dovecot/dovecot-sql.conf.ext
masukkan informasi database Anda dan kredensial pengguna administratif yang dibuat di Bagian 1.
Penting: jika kata sandi Anda berisi (#)
tanda bintang, Anda harus menyertakan string penghubung seperti yang ditunjukkan dalam contoh di bawah:
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';
Selain itu, Anda dapat mengonfigurasi logging untuk Dovecot agar terpisah dari Postfix di /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Terakhir, pastikan log Dovecot dapat diakses oleh pengguna dovecot:
chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
Verifikasi dan Perbaiki Konfigurasi Postifix dan Aktifkan SMTP, POP3, dan IMAP di Firewall
Jika Anda mengalami masalah apa pun saat mengonfigurasi Postfix dan/atau Dovecot, alih-alih mengirimkan semua file konfigurasi untuk meminta bantuan, Anda bisa mendapatkan ringkasan konfigurasi (hanya baris yang tidak diberi komentar) dengan:
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
Selain itu, pastikan kotak masuk email hanya dapat dibaca oleh vmail:
chown –R vmail:vmail /home/vmail
File konfigurasi juga harus dapat dibaca oleh pengguna vmail dan dovecot:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
Terakhir, pastikan Anda mengaktifkan SMTP, POP3, dan IMAP melalui firewall:
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
Konfigurasikan Thunderbird sebagai Klien Email untuk Postfix
Setelah mengamankan akses melalui firewall untuk port yang digunakan dalam komunikasi email, sekarang saatnya mengkonfigurasi klien email. Dengan menggunakan [email dan kata sandinya yang sesuai, bersama dengan mail.linuxnewz.com sebagai server IMAP (atau POP3) dan SMTP, kami siap untuk mulai mengirim dan menerima email ke dan dari akun tersebut:
Anda dapat dengan aman mengabaikan pesan peringatan yang ditampilkan karena Anda menggunakan sertifikat yang tidak ditandatangani oleh CA pihak ketiga yang tepercaya:
Mari buat email percobaan singkat dan klik Kirim:
Saat diminta untuk menerima sertifikat yang ditandatangani sendiri untuk server keluar, konfirmasikan sebelumnya seperti sebelumnya:
Terakhir, masuk ke email tujuan untuk melihat apakah Anda menerima email yang baru saja dikirim. Jika ya, balas pesan tersebut dan lihat apakah email tersebut dikirimkan kembali ke kotak masuk email sumber (jika tidak, lihat log Postfix di /var/log/maillog atau log Dovecot di /var /log/dovecot.log untuk informasi pemecahan masalah):
Anda sekarang memiliki server email Postfix dan Dovecot yang berfungsi dan dapat mulai mengirim dan menerima email.
Ringkasan
Pada artikel ini kami telah menjelaskan cara mengkonfigurasi Postfix dan Dovecot untuk menangani lalu lintas email di server Linux Anda. Jika ada sesuatu yang tidak berfungsi seperti yang ditunjukkan dalam artikel ini, pastikan Anda meluangkan waktu untuk memeriksa dokumentasi Postfix dan Dovecot.
Harap dicatat bahwa meskipun menyiapkan server email Postfix bukanlah tugas yang mudah, ini merupakan pengalaman berharga bagi setiap administrator sistem.
Jika setelah membaca dokumen Anda masih kesulitan dengan Postfix dan/atau Dovecot, silakan kirimkan pesan kepada kami menggunakan formulir komentar di bawah dan kami akan dengan senang hati melakukannya membantu Anda (jangan lupa untuk mengunggah ke layanan penyimpanan online konfigurasi Postfix dan Dovecot seperti yang diambil menggunakan postconf dan doveconf sebagaimana diuraikan dalam artikel ini).