Setelah menyelesaikan bagian 1 dan bagian 2, kami memiliki server SMTP Postfix yang berfungsi dan server IMAP Dovecot. Kami dapat mengirim dan menerima email menggunakan klien email desktop. Meskipun saya telah membuat MX yang benar , A dan PTR catatan, email saya ditandai sebagai spam oleh Gmail dan email Outlook. Jadi di bagian ini, kita akan melihat cara meningkatkan pengiriman email ke kotak masuk penerima dengan menyiapkan SPF dan DKIM di server CentOS/RHEL.
Apa itu Catatan SPF dan DKIM?
SPF dan DKIM adalah dua jenis catatan TXT dalam DNS yang dapat membantu mencegah spoofing email dan membuat email yang sah dikirim ke kotak masuk penerima alih-alih folder spam. Jika domain Anda disalahgunakan oleh email spoofing, email Anda kemungkinan akan masuk ke folder spam penerima jika penerima tidak menambahkan Anda di buku alamat.
SPF Catatan (Sender Policy Framework) menentukan host atau alamat IP mana yang diizinkan untuk mengirim email atas nama domain . Anda hanya boleh mengizinkan server email Anda sendiri atau server ISP Anda untuk mengirim email untuk domain Anda.
DKIM (DomainKeys Identified Mail) menggunakan kunci pribadi untuk menambahkan tanda tangan ke email yang dikirim dari domain Anda . Server SMTP penerima memverifikasi tanda tangan dengan menggunakan kunci publik yang sesuai, yang dipublikasikan di data DNS domain Anda.
Buat Data SPF di DNS
Di antarmuka pengelolaan DNS Anda, buat data TXT baru seperti di bawah ini.
TXT @ v=spf1 mx ~all
Dimana:
- TXT menunjukkan ini adalah data TXT.
- Masukkan @ di bidang nama untuk mewakili nama domain puncak.
- v=spf1 menunjukkan ini adalah data SPF dan versi data SPF adalah SPF1.
- mx berarti semua host yang tercantum dalam data MX diizinkan mengirim email untuk domain Anda dan semua host lain tidak diizinkan.
- ~semua menunjukkan bahwa email dari domain Anda hanya boleh berasal dari host yang ditentukan dalam data SPF. Email yang dikirim dari host lain akan ditandai sebagai tidak dapat dipercaya. Alternatif yang mungkin adalah
+all
,-all
,?all
, tetapi jarang digunakan.
-all
berarti email yang dikirim dari host yang tidak diizinkan harus ditolak, tidak pernah masuk ke kotak masuk atau folder spam penerima. Saya telah melihatnya digunakan oleh facebook.com, tetapi kami biasanya tidak memerlukan kebijakan yang begitu ketat.
Beberapa orang mungkin berpikir bahwa -all
akan lebih baik karena akan menolak email dari host yang tidak tepercaya. Nah, menggunakan -all
dalam kebijakan SPF Anda dapat menyebabkan email Anda sendiri ditolak ketika penerima memiliki dua server SMTP dan server SMTP utama offline, email Anda akan disimpan sementara di server SMTP cadangan. Saat server SMTP utama kembali online, email akan diteruskan dari server SMTP cadangan ke server SMTP utama. Karena Anda tidak mencantumkan server SMTP cadangan penerima dalam kebijakan SPF Anda, email akan ditolak oleh server SMTP utama penerima. Jadi Anda harus menggunakan ~all
dalam kebijakan SPF Anda.
Perhatikan bahwa beberapa pengelola DNS mengharuskan Anda untuk membungkus data SPF dengan tanda kutip ganda seperti di bawah ini.
TXT @ "v=spf1 mx ~all"
Untuk memeriksa apakah data SPF Anda disebarkan ke Internet publik, Anda dapat menggunakan dig
utilitas pada kotak Linux Anda seperti di bawah ini. (Pada CentOS/RHEL, Anda perlu menginstal bind-utils
paket untuk menggunakan dig
perintah:sudo dnf install bind-utils
.)
dig your-domain.com txt
txt
opsi memberitahu dig
bahwa kami hanya ingin menanyakan data TXT.
Anda juga dapat menggunakan validator SPF online seperti spf.myisp.ch untuk melihat host mana yang diizinkan mengirim email untuk domain Anda dan men-debug data SPF Anda jika terjadi kesalahan. Surveyor SPF dmarcian dapat membantu menguji sintaks data SPF Anda.
Mengonfigurasi Agen Kebijakan SPF
Kita juga perlu memberitahu server SMTP Postfix kita untuk memeriksa catatan SPF dari email masuk untuk mendeteksi email palsu. Instal pertama paket yang diperlukan:
sudo dnf install epel-release sudo dnf install pypolicyd-spf
Kemudian tambahkan pengguna untuk policyd-spf.
sudo adduser policyd-spf --user-group --no-create-home -s /bin/false
Edit file konfigurasi proses master Postfix.
sudo nano /etc/postfix/master.cf
Tambahkan baris berikut di akhir file, yang memberitahu Postfix untuk memulai daemon kebijakan SPF saat dimulai sendiri. Policyd-spf akan dijalankan sebagai policyd-spf
pengguna.
policyd-spf unix - n n - 0 spawn user=policyd-spf argv=/usr/libexec/postfix/policyd-spf
Catatan :Anda tidak boleh menjalankan policyd-spf di lingkungan chroot.
Simpan dan tutup file. Selanjutnya, edit file konfigurasi utama Postfix.
sudo nano /etc/postfix/main.cf
Tambahkan baris berikut di akhir file. Baris pertama menentukan pengaturan batas waktu agen kebijakan Postfix (untuk menanyakan DNS). Baris berikut akan memberlakukan batasan pada email masuk dengan memeriksa catatan SPF.
policyd-spf_time_limit = 3600 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/policyd-spf
Simpan dan tutup file. Kemudian restart Postfix.
sudo systemctl restart postfix
Lain kali, saat Anda menerima email dari domain yang memiliki data SPF, Anda dapat melihat hasil pemeriksaan SPF di header email mentah. Header berikut menunjukkan pengirim mengirim email dari host resmi.
Received-SPF: Pass (mailfrom) identity=mailfrom;
Menyiapkan DKIM
Dua perangkat lunak umum yang dapat melakukan penandatanganan dan verifikasi DKIM di Linux adalah OpenDKIM dan Amavis. Kami akan menggunakan OpenDKIM karena ringan dan OpenDMARC tidak bekerja dengan Amavis.
Instal dan Konfigurasi OpenDKIM di CentOS 8/RHEL8
Instal OpenDKIM dari repositori EPEL (Paket Ekstra untuk Linux Perusahaan).
sudo dnf install epel-release sudo dnf install opendkim perl-Getopt-Long
Edit file konfigurasi utama OpenDKIM.
sudo nano /etc/opendkim.conf
Temukan baris berikut.
Mode v
Secara default, OpenDKIM berjalan dalam mode verifikasi (v), yang akan memverifikasi tanda tangan DKIM dari pesan email yang masuk. Kami perlu menandatangani email keluar, jadi ubah baris ini menjadi berikut untuk mengaktifkan mode penandatanganan.
Mode sv
Kemudian temukan baris berikut.
## Specifies whether or not the filter should generate report mail back ## to senders when verification fails and an address for such a purpose ## is provided. See opendkim.conf(5) for details. SendReports yes ## Specifies the sending address to be used on From: headers of outgoing ## failure reports. By default, the e-mail address of the user executing ## the filter is used ([email protected]). # ReportAddress "Example.com Postmaster" <[email protected]>
Ketika verifikasi tanda tangan gagal dan tanda tangan menyertakan permintaan pelaporan (“r=y”) dan domain penandatanganan mengiklankan alamat pelaporan (yaitu ra=user) dalam catatan pelaporan di DNS, OpenDKIM akan mengirimkan laporan terstruktur ke alamat tersebut berisi rincian yang diperlukan untuk mereproduksi masalah. Anda mungkin ingin menggunakan alamat email Dari tertentu untuk mengirim laporan. Batalkan komentar pada ReportAddress
parameter dan mengubah alamat email. Perhatikan bahwa ini tidak akan menimbulkan masalah hamburan balik, karena email laporan akan dikirim ke alamat email yang ditentukan dalam data DNS domain pengirim.
Temukan baris berikut dan beri komentar, karena kami akan menggunakan kunci terpisah untuk setiap nama domain.
KeyFile /etc/opendkim/keys/default.private
Selanjutnya, temukan 4 baris berikut dan batalkan komentarnya.
# KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts
Simpan dan tutup file.
Buat Tabel Penandatanganan, Tabel Kunci, dan File Host Tepercaya
Edit tabel penandatanganan berkas.
sudo nano /etc/opendkim/SigningTable
Tambahkan baris berikut di akhir file ini. Ini memberi tahu OpenDKIM bahwa jika pengirim di server Anda menggunakan @your-domain.com
alamat, maka itu harus ditandatangani dengan kunci pribadi yang diidentifikasi oleh 20200308._domainkey.your-domain.com
.
*@your-domain.com 20200308._domainkey.your-domain.com
20200308 adalah pemilih DKIM. Nama domain mungkin memiliki beberapa kunci DKIM. Pemilih DKIM memungkinkan Anda memilih kunci DKIM tertentu. Anda dapat menggunakan nama apa pun untuk pemilih DKIM, tetapi menurut saya lebih mudah menggunakan tanggal saat ini (8 Maret 2020) sebagai pemilih DKIM. Simpan dan tutup file. Kemudian edit tabel kunci berkas.
sudo nano /etc/opendkim/KeyTable
Tambahkan baris berikut, yang menentukan lokasi kunci pribadi DKIM.
20200308._domainkey.your-domain.com your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private
Simpan dan tutup file. Selanjutnya, edit file host terpercaya.
sudo nano /etc/opendkim/TrustedHosts
127.0.0.0.1 dan ::1 disertakan dalam file ini secara default. Sekarang tambahkan baris berikut. Ini memberi tahu OpenDKIM bahwa jika email berasal dari nama domain Anda sendiri, OpenDKIM tidak boleh melakukan verifikasi DKIM pada email tersebut.
*.your-domain.com
Simpan dan tutup file.
Buat Pasangan Kunci Pribadi/Publik
Karena DKIM digunakan untuk menandatangani pesan keluar dan memverifikasi pesan masuk, Anda perlu membuat kunci pribadi untuk menandatangani email keluar dan kunci publik untuk menerima server SMTP untuk memverifikasi tanda tangan DKIM dari email Anda. Kunci publik akan dipublikasikan di DNS.
Buat folder terpisah untuk domain.
sudo mkdir /etc/opendkim/keys/your-domain.com
Buat kunci menggunakan opendkim-genkey
alat.
sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v
Perintah di atas akan membuat kunci 2048 bit. -d (domain)
menentukan domain. -D (directory)
menentukan direktori tempat kunci akan disimpan. Saya menggunakan 20200308
sebagai pemilih DKIM. Setelah perintah dijalankan, kunci pribadi akan ditulis ke 20200308.private
file dan kunci publik akan ditulis ke 20200308.txt
berkas.
Secara default, hanya root yang dapat membaca dan menulis ke file kunci. Buat opendkim
sebagai pemilik kunci pribadi.
sudo chown opendkim:opendkim /etc/opendkim/keys/ -R
Publikasikan Kunci Publik Anda di Catatan DNS
Tampilkan kunci publik
sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt
String setelah p
parameter adalah kunci publik.
Di pengelola DNS Anda, buat data TXT, masukkan 20200308._domainkey
di kolom nama. (Anda perlu mengganti 20200308 dengan pemilih DKIM Anda sendiri.) Kemudian kembali ke jendela terminal, salin semua yang ada di dalam tanda kurung dan tempel ke bidang nilai catatan DNS. Anda perlu menghapus semua tanda kutip ganda dan jeda baris di bidang nilai. Jika Anda tidak menghapusnya, pengujian kunci pada langkah berikutnya mungkin akan gagal.
Uji Kunci DKIM
Masukkan perintah berikut di server CentOS 8/RHEL 8 Anda untuk menguji kunci Anda.
sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv
Jika semuanya OK, Anda akan melihat key OK
pesan.
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com' opendkim-testkey: key OK
Perhatikan bahwa data DKIM Anda mungkin perlu waktu untuk menyebar ke Internet. Bergantung pada pencatat domain yang Anda gunakan, data DNS Anda mungkin disebarkan secara instan, atau mungkin perlu waktu hingga 24 jam untuk disebarkan. Anda dapat pergi ke https://www.dmarcanalyzer.com/dkim/dkim-check/, masukkan 20200308
sebagai pemilih dan masukkan nama domain Anda untuk memeriksa propagasi data DKIM.
Jika Anda melihat "Kunci tidak aman", jangan panik. Ini karena DNSSEC tidak diaktifkan pada nama domain Anda. DNSSEC adalah standar keamanan untuk kueri DNS yang aman. Sebagian besar nama domain belum mengaktifkan DNSSEC. Anda dapat terus mengikuti panduan ini.
Sekarang kita dapat memulai layanan opendkim.
sudo systemctl start opendkim
Dan aktifkan mulai otomatis saat boot.
sudo systemctl enable opendkim
OpenDKIM mendengarkan 127.0.0.1:8891
.
Hubungkan Postfix ke OpenDKIM
Edit file konfigurasi utama Postfix.
sudo nano /etc/postfix/main.cf
Tambahkan baris berikut di akhir file ini, sehingga Postfix akan dapat memanggil OpenDKIM melalui protokol milter. Perhatikan bahwa Anda harus menggunakan 127.0.0.1
sebagai alamat. Jangan gunakan localhost
.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
Simpan dan tutup file. Kemudian tambahkan postfix
pengguna ke opendkim
grup.
sudo gpasswd -a postfix opendkim
Mulai ulang postfix
layanan.
sudo systemctl restart postfix
Pemeriksaan SPF dan DKIM
Sekarang Anda dapat mengirim email percobaan dari server email ke akun Gmail Anda untuk melihat apakah pemeriksaan SPF dan DKIM lulus. Di sisi kanan pesan email yang dibuka di Gmail, jika Anda mengklik show original
dari menu tarik-turun, Anda dapat melihat hasil autentikasi.
Jika pesan Anda tidak ditandatangani dan pemeriksaan DKIM gagal, Anda mungkin ingin memeriksa log postfix (/var/log/maillog
) untuk melihat apa yang salah dalam konfigurasi Anda. Server email Anda juga akan melakukan pemeriksaan SPF dan DKIM pada domain pengirim. Anda dapat melihat hasilnya di header email. Berikut ini adalah pemeriksaan SPF dan DKIM pada pengirim yang menggunakan Gmail.
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> Authentication-Results: mail.linuxbabe.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co"; dkim-atps=neutral
Menguji Skor dan Penempatan Email
Sekarang Anda dapat pergi ke https://www.mail-tester.com. Anda akan melihat alamat email yang unik. Kirim email dari domain Anda ke alamat ini, lalu periksa skor Anda. Seperti yang Anda lihat, saya mendapat nilai sempurna.
Mail-tester.com hanya dapat menunjukkan kepada Anda skor pengirim. Ada layanan lain bernama GlockApps yang memungkinkan Anda memeriksa apakah email Anda ditempatkan di kotak masuk atau folder spam penerima, atau ditolak mentah-mentah. Ini mendukung banyak penyedia email populer seperti Gmail, Outlook, Hotmail, YahooMail, iCloud mail, dll
Kotak Surat Microsoft (Hotmail.com, Outlook.com)
Microsoft tampaknya menggunakan daftar hitam internal yang memblokir banyak alamat IP yang sah. Jika email Anda ditolak oleh outlook atau hotmail, Anda harus mengirimkan formulir informasi pengirim. Setelah itu, email Anda akan diterima oleh outlook/hotmail, tetapi mungkin masih dicap sebagai spam. Dalam pengujian saya, email mendarat di kotak masuk Gmail saya. Namun, itu masih dilabeli sebagai spam di email outlook.com saya meskipun SPF dan DKIM lulus.
Bagaimana jika Email Anda Masih Ditandai sebagai Spam?
Saya memiliki lebih banyak tips untuk Anda dalam artikel ini:Cara menghentikan email Anda ditandai sebagai spam.
Langkah Selanjutnya
Di bagian 5, kita akan melihat cara membuat data DMARC untuk melindungi domain Anda dari spoofing email. Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan buletin gratis kami untuk menerima artikel yang lebih bermanfaat, atau ikuti kami di Twitter atau sukai halaman Facebook kami.