Membuat SPF dan DKIM Pada Mail Server di Ubuntu 20.04
Artikel ini adalah bagian ke-3 dari seri tutorial membuat mail server di Ubuntu 20.04. Sebelumnya kita telah install postfix sebagai SMTP server pada ubuntu server di part 1. Lalu kita juga telah install IMAP server dan enkripsi TLS di ubuntu server pada part 2. Langkah selanjutnya pada part 3 ini adalah membuat SPF dan DKIM agar lebih dipercaya mail server lain sehingga tidak dianggap spam.
SPF dan DKIM merupakan DNS record yang bertipe TXT dengan value berupa IP dan kode verifikasi server. Saat e-mail dikirim sebagian besar mail server tujuan akan melakukan cek apakah memiliki SPF dan DKIM dengan value yang sesuai IP pengirim. Jika semua cocok dan tervalidasi maka akan menambah nilai kepercayaan dari e-mail tersebut.
Berikut ini adalah cara membuat SPF dan DKIM pada mail server ubuntu server 20.04.
1. Install Postfix policy untuk SPF checking
Kita juga harus melakukan cek terhadap e-mail masuk dan filter atau block semua e-mail yang tidak memiliki SPF atau SPF-nya tidak sesuai.
Install Postfix Policy SPF:
$ sudo apt -y install postfix-policyd-spf-python
Edit file konfigurasi master Postfix:
$ sudo nano /etc/postfix/master.cf
Tambahkan kode di bawah ini di bagian paling bawah file tersebut:
policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/bin/policyd-spf
Tutup lalu simpan file tersebut.
Edit file konfigurasi utama Postfix:
$ sudo nano /etc/postfix/main.cf
Tambahkan kode di bawah ini pada bagian paling bawah file:
policyd-spf_time_limit = 3600 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/policyd-spf
Restart Postfix:
$ sudo systemctl restart postfix
2. Install dan Konfigurasi OpenDKIM
Install OpenDKIM dari repositori:
$ sudo apt -y install opendkim opendkim-tools
Masukkan postfix ke grup opendkim:
$ sudo gpasswd -a postfix opendkim
Edit konfigurasi file opendkim:
$ sudo nano /etc/opendkim.conf
Tambahkan parameter berikut di bagian paling bawah file:
Canonicalization simple Mode sv SubDomains no AutoRestart yes AutoRestartRate 10/1M Background yes DNSTimeout 5 SignatureAlgorithm rsa-sha256 KeyTable refile:/etc/opendkim/key.table SigningTable refile:/etc/opendkim/signing.table ExternalIgnoreList /etc/opendkim/trusted.hosts InternalHosts /etc/opendkim/trusted.hosts
Simpan dan tutup file tersebut.
Buat direktori dan subdirektori untuk menyimpan file semua file konfigurasi dkim. Sesuaikan dengan nama domain anda:
$ sudo mkdir -p /etc/opendkim/keys/itkoding.com
Buat file signing.table pada direktori opendkim:
$ sudo nano /etc/opendkim/signing.table
Tambahkan domain anda dengan format *@namadomain.com default._domainkey.namadomain.com
misalnya domain saya adalah itkoding.com:
*@itkoding.com default._domainkey.itkoding.com
Simpan file kemudian tutup.
Buat file key.table:
$ sudo nano /etc/opendkim/key.table
Tambahkan parameter di bawah ini (jangan lupa sesuaikan nama domain anda):
default._domainkey.itkoding.com itkoding.com:default:/etc/opendkim/keys/itkoding.com/default.private
Simpan lalu tutup file.
Buat file trusted:
$ sudo nano /etc/opendkim/trusted.hosts
Tambahkan kode di bawah ini. Ubah nama domain sesuai domain anda:
127.0.0.1 localhost *.itkoding.com
Simpan lalu tutup file.
Buat key menggunakan opendkim-genkey untuk domain anda:
$ sudo opendkim-genkey -b 2048 -d itkoding.com -D /etc/opendkim/keys/itkoding.com -s default -v
Maka akan menghasilkan file private default.private dan file publik default.txt. Isi dari file default.txt inilah yang akan kita tambahkan pada DNS record di cloudflare atau nameserver lain.
Tampilkan file default.txt:
$ sudo cat /etc/opendkim/keys/itkoding.com/default.txt
Copy semua yang ada di dalam tanda kurung ( … ) lalu hapus semua tanda petik dua ” dan spasi dari kode yang telah dicopy tersebut (kita bisa copy lalu paste pada editor teks untuk sementara seperti notepad kemudian menghapus semua petik dua dan spasinya). Jadikan dalam 1 baris tapi jangan sampai menghapus selain spasi dan tanda petik!
Kode tersebut akan kita masukkan pada DNS record di akun cloudflare kita pada langkah selanjutnya.
3. Buat DNS Record untuk SPF dan DKIM
Selanjutnya kita akan membuat DNS record bertipe TXT di Cloudflare. Sesuai dengan prasyarat pada tutorial part 1, kita menggunakan DNS Cloudflare untuk mengatur DNS record. Nah, buka kembali akun Cloudflare tersebut lalu pilih menu DNS.
Buat record baru dengan cara klik Add Record. Pilih TXT pada Type. Isi Name dengan default._domainkey
. Pada Content isikan kode yang telah kita copy dan edit di notepad tadi. Lalu klik Save.
Dengan demikian kita telah memiliki DNS record untuk DKIM. Selanjutnya kita akan membuat DNS record untuk SPF.
Buat lagi record baru dengan klik Add Record. Pada Type pilih TXT lalu isi @
pada Name. Kemudian pada Value isikan v=spf1 mx ~all
lalu klik Save.
Artinya kita menggunakan versi spf1. Yang diperbolehkan mengirim email adalah hanya domain yang terdaftar sebagai MX.
Karena kita sudah membuat DNS record dengan Type MX pada tutorial prasyarat di part 1 maka kita tidak perlu membuat record MX lagi. Pastikan hostname mail server kita yang digunakan sebagai MX. Seperti contoh tutorial ini record MX untuk itkoding.com adalah itkodingserver.itkoding.com
yang merupakan hostname dari mail server ini.
Dengan demikian kita telah memiliki DNS record DKIM, SPF dan MX untuk mail server.
4. Ubah Kepemilikan Direktori OpenDKIM
Ubah kepemilikan direktori dan semua isinya menjadi opendkim:opendkim:
$ sudo chown -R opendkim:opendkim /etc/opendkim
Lalu, hapus permission agar tidak bisa diakses user lain:
$ sudo chmod go-rw /etc/opendkim/keys
5. Test DKIM key dan DNS Record
Test DKIM apakah sudah sesuai dengan DNS record menggunakan opendkim-testkey:
$ sudo opendkim-testkey -d itkoding.com -s default -vvv
Jika konfigurasi benar maka akan ada tampilan Key OK seperti ini:
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'default._domainkey.itkoding.com' opendkim-testkey: key not secure opendkim-testkey: key OK
Key not secure menandakan kita tidak menggunakan DNSSEC. Saat ini sebagian besar domain di internet tidak menggunakan DNSSEC jadi hal ini tidak masalah.
6. Hubungkan OpenDKIM dengan Postfix
Buat direktori baru:
$ sudo mkdir /var/spool/postfix/opendkim
Ubah kepemilikan direktori:
$ sudo chown opendkim:postfix /var/spool/postfix/opendkim
Buka file konfigurasi OpenDKIM:
$ sudo nano /etc/opendkim.conf
Cari parameter Socket local:/run/opendkim/opendkim.sock
lalu ubah menjadi:
Socket local:/var/spool/postfix/opendkim/opendkim.sock
Simpan file lalu tutup.
Buka file /etc/default/opendkim:
$ sudo nano /etc/default/opendkim
Cari parameter di bawah ini jika ada:
SOCKET=local:$RUNDIR/opendkim.sock
Ubah menjadi:
SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"
Simpan lalu tutup file.
Edit file konfigurasi Postfix:
$ sudo nano /etc/postfix/main.cf
Tambahkan parameter di bawah ini pada bagian paling bawah:
milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim.sock non_smtpd_milters = $smtpd_milters
Simpan kemudian tutup file.
Restart OpenDKIM dan Postfix:
$ sudo systemctl restart opendkim postfix
7. Test Mail Server
Lakukan test untuk mengetahui hasil konfigurasi SPF dan DKIM melalui mail-tester.com. Silahkan buka website mail-tester.com lalu copy alamat e-mail yang tampil. Buka aplikasi Thunderbird yang telah kita install di laptop atau komputer pada tutorial part 2. Kemudian, kirim e-mail ke alamat e-mail yang tampil pada website mail-tester tadi dengan subject dan isi email terserah anda. Setelah itu klik Then check your score di website mail-tester.
Lihat hasilnya di web tersebut pada bagian SpamAssassin likes you. Di sana akan ditampilkan apakah DKIM dan SPF kita valid. Jika valid akan tampil keterangan seperti gambar di bawah ini.
Langkah Berikutnya
Setelah hasil test mail server untuk SPF dan DKIM valid, selanjutnya kita akan membuat DMARC record. Dengan DMARC record akan meningkatkan lagi kepercayaan mail server kita dan dapat melindungi domain dari email spoofing. Untuk tau lebih jelas silahkan simak di tulisan saya pada part 4 tentang cara membuat DMARC record untuk mail server di ubuntu. Sampai jumpa di panduan berikutnya!