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
Key publik dari opendkim-genkey untuk spf

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.

Membuat record dkim di dns cloudflare

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.

Membuat record spf pada dns cloudflare

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.

Contoh record mx mail server

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.

Tampilan mail-tester dengan thunderbird

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.

Hasil pengujian di mail-tester untuk spf dan dkim

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!

M. Hernawan
Web developer yang juga suka dengan dunia sysadmin. Pernah belajar Teknik Informatika di Indonesia.

Kirim Komentar