MAIL SERVER – POSTFIX DAN DOVECOT

Topologi

Pengenalan Mail Server

Mail server adalah sebuah layanan yang digunakan untuk mengirim dan menerima email. Komponen mail server ada 3, sebagai berikut:

  1. Mail Transfer Agent (MTA) adalah sebuah server yang bertanggung jawab untuk mengirim dari mail server pengirim sampai ke mail server penerima. Contoh sendmail dan postfix.
  2. Mail Delivery Agent (MDA) adalah sebuah server yang bertanggung jawab untuk menangani email masuk.
  3. Mail User Agent (MUA) adalah aplikasi yang berinteraksi langsung dengan end user untuk mengirim dan menerima email. Contoh thunderbird.

Protokol mail server:

  1. Outgoing Server (SMTP).
  2. Incoming Server (POP3,IMAP).

Langkah Langkah Membuat Mail Server

Setup Hostname FQDN

srv
root@srv:~# nano /etc/hosts…………………127.0.0.1       localhost127.0.0.1       srv141.11.25.133   mail.solusiber.com      mail…………………root@srv:~# hostnamectl set-hostname mailroot@srv:~# systemctl restart systemd-hostnamed

Setelah itu logout dan login lagi. Verifikasi hostname dan fqdn.

mail
root@mail:~# hostnamectl   Static hostname: mail         Icon name: computer-vm           Chassis: vm        Machine ID: 78df73bcb011409e840cce92b6b40e6d           Boot ID: 4e919149624d4de4ab89593cc9b179c8    Virtualization: kvm  Operating System: Debian GNU/Linux 11 (bullseye)            Kernel: Linux 5.10.0-23-amd64      Architecture: x86-64root@mail:~# hostname -fmail.solusiber.com

Buat DNS Record

Buat dns record yang mengarah ke mail server.

TypeNameContentPriorityTTL
Asolusiber.com141.11.25.133Auto
Amail141.11.25.133Auto
MXsolusiber.commail.solusiber.com5Auto
TXTsolusiber.comv=spf1 mx ip4:141.11.25.133 ~allAuto
TXT_dmarcv=DMARC1; p=reject; rua=mailto:rua@solusiber.com; ruf=mailto:ruf@solusiber.com; sp=none; fo=1; adkim=s; aspf=sAuto
TXTDKIMAkan digenerate nanti dengan opendkimAuto

Dari record diatas sebenarnya ada tambahan lagi yaitu record PTR, untuk membuat PTR Record kalian harus request ke penyedia layanan vps atau isp dengan open ticket. Sedikit penjelasan tentang spf, dkim dan dmarc.

  1. SPF (Sender Policy Framework): Memverifikasi bahwa email berasal dari server yang diotorisasi oleh domain pengirim. DNS domain mengandung daftar server yang diizinkan, dan penerima memeriksa apakah email berasal dari salah satu server ini.
  2. DKIM (DomainKeys Identified Mail): Menyematkan tanda tangan kriptografis ke header email. Penerima dapat memverifikasi tanda tangan ini dengan kunci publik yang dipublikasikan di DNS domain pengirim, memastikan integritas dan keaslian email.
  3. DMARC (Domain-based Message Authentication, Reporting, and Conformance): Menggabungkan SPF dan DKIM untuk memberi petunjuk pada penerima bagaimana menangani email yang gagal verifikasi (misalnya, menolak atau mengkarantina email). DMARC juga memungkinkan pengirim untuk menerima laporan tentang email yang dikirim dengan domain mereka.

Instalasi Cerbot

mail
root@mail:~# apt install -y certbot

Lalu generate ssl certificate.

mail
root@mail:~# certbot certonly –standalone -d mail.solusiber.com

Untuk letak certificate yang digenerate ada di direktori ‘/etc/letsencrypt/live/mail.solusiber.com’.

Instalasi OpenDKIM

Install opendkim dan generate key.

mail
root@mail:~# apt install -y opendkim opendkim-toolsroot@mail:~# mkdir /etc/opendkimroot@mail:~# opendkim-genkey -D /etc/opendkim/ –domain solusiber.com –selector defaultroot@mail:~# cat /etc/opendkim/default.txtdefault._domainkey      IN      TXT     ( “v=DKIM1; h=sha256; k=rsa; “”p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1T+DuNQiNHdpZx94m6CqsQt8dPj7Q8Hz4D/FMyN78U444CmW680exrXceyE9TxyzQN9fXlS3c5toAhoN1mKHvbge1cJ2/8Q15kGo32kBGnqV5xGWaTVWxSCiVtJm5uNH/xMZ2EDjGQe9UVrHZ/idtwH0etwrlVv3A7Jg7zN1iIUNgh7VEmnOipygPbTfsZqdMhA8RGesY1Y6vc”         “Cw1SIE2MZ+ViJ9lOt8uIv9jwCNXVRweag9HNAIujZ0Rx7tMjua9cLanS1dTsOZpR4i9Pbj1nHUEhzTfA6vc2toIuGAsdQM6Uohe4jx7Y7VVjtnGUGxW2/8gTG5UGNJa0I21cnn8wIDAQAB” )  ; —– DKIM key default for solusiber.com

Salin isi file default.txt dan tambahkan ke dns record seperti gambar dibawah ini (tanpa tanda petik “ yang saya block kuning.

Ubah owner dari direktori ‘/etc/opendkim’.

mail
root@mail:~# chown -R opendkim:opendkim /etc/opendkim

Buat konfigurasi di file ‘/etc/opendkim.conf’ seperti dibawah ini.

mail
root@mail:~# nano /etc/opendkim.conf…………………Syslog                            yesSyslogSuccess             yesLogWhy                         yesCanonicalization         relaxed/simpleMode                             svOversignHeaders       FromUserID                           opendkim:opendkimUMask                           002Socket                           inet:8891@localhostPidFile                            /run/opendkim/opendkim.pidTrustAnchorFile          /usr/share/dns/root.keyExternalIgnoreList    refile:/etc/opendkim/TrustedHostsKeyTable                      refile:/etc/opendkim/KeyTableSigningTable               refile:/etc/opendkim/SigningTableSignatureAlgorithm rsa-sha256AutoRestart                yesAutoRestartRate       10/1h…………………
root@mail:~# nano /etc/opendkim/TrustedHosts…………………solusiber.com…………………
root@mail:~# cat /etc/opendkim/KeyTable…………………default._domainkey.solusiber.com solusiber.com:mail:/etc/opendkim/default.private…………………
root@mail:~# cat /etc/opendkim/SigningTable…………………*@solusiber.com default._domainkey.solusiber.com…………………

Setelah itu restart service opendkim.

mail
root@mail:~# systemctl restart opendkim

Cek di situs https://dmarcian.com/dkim-inspector pastikan valid.

Instalasi Postfix

mail
root@mail:~# apt install -y postfix sasl2-bin

Pada bagian postfix configuration pilih Internet Site, pada System Mail Name masukkan nama domain.

Lalu konfigurasi file dari ‘/usr/share/postfix/main.cf.dist’ ke  ‘/etc/postfix/main.cf’. Pastikan konfigurasinya disesuaikan seperti dibawah ini.

mail
root@mail:~# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cfroot@mail:~# nano /etc/postfix/main.cf…………………compatibility_level = 2command_directory = /usr/sbindaemon_directory = /usr/lib/postfix/sbindata_directory = /var/lib/postfixmail_owner = postfixmyhostname = mail.solusiber.commydomain = solusiber.commyorigin = $mydomaininet_interfaces = allmydestination = $myhostname, localhost.$mydomain, localhost, $mydomainlocal_recipient_maps = unix:passwd.byname $alias_mapsunknown_local_recipient_reject_code = 550mynetworks_style = subnetmynetworks = 127.0.0.0/8, 0.0.0.0/0alias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliaseshome_mailbox = Maildir/smtpd_banner = $myhostname ESMTPdebugger_command =         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin         ddd $daemon_directory/$process_name $process_id & sleep 5sendmail_path = /usr/sbin/postfixnewaliases_path = /usr/bin/newaliasesmailq_path = /usr/bin/mailqsetgid_group = postdropinet_protocols = ipv4disable_vrfy_command = yessmtpd_helo_required = yesmessage_size_limit = 10240000smtpd_sasl_type = dovecotsmtpd_sasl_path = private/authsmtpd_sasl_auth_enable = yessmtpd_sasl_security_options = noanonymoussmtpd_sasl_local_domain = $myhostnamesmtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, rejectsmtpd_client_restrictions = permit_mynetworks, reject_unknown_client_hostname, permitsmtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sendersmtpd_helo_restrictions = permit_mynetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permitsmtpd_use_tls = yessmtp_tls_security_level = encryptsmtp_tls_mandatory_protocols = !SSLv2, !SSLv3smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3smtpd_tls_cert_file = /etc/letsencrypt/live/mail.solusiber.com/fullchain.pemsmtpd_tls_key_file = /etc/letsencrypt/live/mail.solusiber.com/privkey.pemsmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scacheheader_checks = regexp:/etc/postfix/list_unsub_header…………………

Lalu edit file ‘/etc/postfix/master.cf’. Hilankan comment pada line berikut.

mail
root@mail:~# nano /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=yessmtps     inet  n       –       y       –       –       smtpd  -o syslog_name=postfix/smtps  -o smtpd_tls_wrappermode=yes  -o smtpd_sasl_auth_enable=yes…………………

Restart service postfix.

mail
root@mail:~# systemctl restart postfix

Instalasi Dovecot

mail
root@mail:~# apt install -y dovecot-{core,pop3d,imapd}

Edit file ‘/etc/dovecot/dovecot.conf’. Uncomment pada bagian berikut.

mail
root@mail:~# nano /etc/dovecot/dovecot.conf…………………listen = *…………………

Edit file ‘/etc/dovecot/conf.d/10-auth.conf’. Uncomment pada bagian berikut.

mail
root@mail:~# nano /etc/dovecot/conf.d/10-auth.conf…………………disable_plaintext_auth = noauth_mechanisms = plain login…………………

Edit file ‘/etc/dovecot/conf.d/10-mail.conf’. Uncomment pada bagian berikut.

mail
root@mail:~# nano /etc/dovecot/conf.d/10-mail.conf…………………mail_location = maildir:~/Maildir…………………

Edit file ‘/etc/dovecot/conf.d/10-master.conf’. Uncomment pada bagian berikut.

mail
root@mail:~# nano /etc/dovecot/conf.d/10-master.conf…………………  unix_listener /var/spool/postfix/private/auth {    mode = 0666    user = postfix    group = postfix  }…………………

Edit file ‘/etc/dovecot/conf.d/10-ssl.conf’. Uncomment pada bagian berikut.

mail
root@mail:~# nano /etc/dovecot/conf.d/10-master.conf…………………ssl = yesssl_cert = </etc/letsencrypt/live/mail.solusiber.com/fullchain.pemssl_key = </etc/letsencrypt/live/mail.solusiber.com/privkey.pem…………………

Buat direktori ‘Maildir/’ di masing” user dan restart service dovecot.

mail
root@mail:~# maildirmake.dovecot /etc/skel/Maildir/root@mail:~# systemctl restart dovecot

Membuat User Mail

Buat user postmaster, achmad dan alif.

mail
root@mail:~# adduser postmasterroot@mail:~# adduser achmadroot@mail:~# adduser alif

Verifikasi  Mail Server

Login Menggunakan Protokol IMAP

Login Menggunakan Protokol POP3

Uji Coba Kirim Email

Kirim email dari user achmad@solusiber.com ke alif@solusiber.com begitu juga sebaliknya, pastikan email masuk.

Kirim email dari user achmad@solusiber.com ke alifnuxerid@gmail.com begitu juga sebaliknya, pastikan email masuk.

Tes Score Email

Buka situs https://www.mail-tester.com lalu kirim email menggunakan akun solusiber.com dan cek mendapatkan score berapa, tujuan dari mail tester ini adalah untuk tuning mail server, semakin besar score yang didapatkan semakin bagus.

Untuk mail server saya mendapatkan score 9/10. Klik tanda yang berwarna kuning atau merah untuk melihat konfigurasi yang kurang atau yang harus di tuning.

Tertarik mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti, klik disini untuk info lengkapnya.

Penulis : Achmad Alif Nasrulloh