GNU/Linux >> Belajar Linux >  >> Cent OS

Bagian 4:Mengatur SPF dan DKIM dengan Postfix di CentOS 8/RHEL 8 Mail Server

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.


Cent OS
  1. Cara Menginstal Dan Mengintegrasikan DKIM Dengan OpenDKIM Dan Postfix Pada VPS CentOS 6

  2. Siapkan server email dengan PostfixAdmin dan MariaDB di CentOS 7

  3. Cara mengatur server email dengan PostfixAdmin di CentOS 7

  1. Cara menginstal server email postfix di RHEL 8 / CentOS 8

  2. Cara Menginstal dan Mengkonfigurasi Server Mail Postfix di CentOS 8

  3. Server Sempurna – CentOS 7.1 dengan Apache2, Postfix, Dovecot, Pure-FTPD, BIND dan ISPConfig 3

  1. Server Sempurna CentOS 7.2 dengan Apache, Postfix, Dovecot, Pure-FTPD, BIND dan ISPConfig 3.1

  2. Server Sempurna CentOS 7.3 dengan Apache, Postfix, Dovecot, Pure-FTPD, BIND dan ISPConfig 3.1

  3. Server Sempurna CentOS 7.4 dengan Apache, Postfix, Dovecot, Pure-FTPD, BIND dan ISPConfig 3.1