Kata Pengantar
Di server saya 2 domain terpisah berputar. Sebelum kisah pemblokiran Roskomnadzor, kami mengumpulkan lalu lintas sekitar 2000 kunjungan per hari, dan server surat mengirim sekitar 200 surat sehari ke semua layanan surat populer, termasuk Google dan Yandex. Semuanya luar biasa. Tapi seperti yang dikatakan dalam video terkenal: “Semuanya begitu baik sampai
Navalny Roskomnadzor datang!
Sekarang kami telah berhasil menemukan hoster yang alamat IP-nya tidak termasuk dalam pemblokiran sensor negara, masalah lain telah muncul. Google Good Corporation telah berhenti membiarkan tukang pos kami melampaui ambang batas.
Server Google MX melempar surat saya dengan kira-kira pesan berikut: "Pesan Anda tampaknya tidak diminta, mari selamat tinggal ..."
Log koneksi SMTP Google050 <legale.legale@gmail.com>... Connecting to gmail-smtp-in.l.google.com. via esmtp... 050 220 mx.google.com ESMTP v6-v6si38552789wrc.432 - gsmtp 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-STARTTLS 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> STARTTLS 050 220 2.0.0 Ready to start TLS 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> MAIL From:<root@sevenlight.ru> SIZE=297 050 250 2.1.0 OK v6-v6si38552789wrc.432 - gsmtp 050 >>> RCPT To:<legale.legale@gmail.com> 050 >>> DATA 050 250 2.1.5 OK v6-v6si38552789wrc.432 - gsmtp 050 354 Go ahead v6-v6si38552789wrc.432 - gsmtp 050 >>> . 050 550-5.7.1 [2a02:c207:2018:3546::1 7] Our system has detected that this 050 550-5.7.1 message is likely unsolicited mail. To reduce the amount of spam sent 050 550-5.7.1 to Gmail, this message has been blocked. Please visit 050 550-5.7.1 https://support.google.com/mail/?p=UnsolicitedMessageError 050 550 5.7.1 for more information. v6-v6si38552789wrc.432 - gsmtp
Dengan perintah ini, saya mengirim pesan pengujian:
echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com
Saya tidak akan menulis tentang tarian saya dengan rebana dalam upaya untuk menembus filter spam. Saya hanya bisa mengatakan bahwa saya diangkut sepanjang malam, tetapi saya hanya bisa berhasil pada hari berikutnya. Itu sebabnya saya memutuskan untuk menulis manual ini.
INSTRUKSI PENGATURAN SPF + DKIM PADA UBUNTU 18.04
Kecuraman instruksi ini adalah bahwa ia bekerja, tidak seperti banyak instruksi lainnya. Saya menjamin bahwa Anda dapat mengkonfigurasi setidaknya 2 domain pada 1 server tanpa banyak kesulitan.
1. Instal paket yang diperlukan
apt-get install sendmail opendkim -y
2. Konfigurasikan opendkim
Konfigurasi ada di sini: /etc/opendkim.conf
/etc/opendkim.confAutoRestart Ya
UMask 002
Syslog ya
AutoRestartRate 10 / 1h
Kanonikalisasi santai / sederhana
Refile ExternalIgnoreList: / etc / opendkim / TrustedHosts
Refile InternalHosts: / etc / opendkim / TrustedHosts
Refile KeyTable: / etc / opendkim / KeyTable
Refile SigningTable: / etc / opendkim / SigningTable
LogMengapa Ya
Mode sv
PidFile /var/run/opendkim/opendkim.pid
Algoritma Tanda Tangan rsa-sha256
Soket inet: 8891 @ localhost
SyslogSuccess Ya
TemporaryDirectory / var / tmp
UserID opendkim: opendkim
3. Atur kunci dan aturan penandatanganan
Saya akan menjelaskan prosedur untuk membuat kunci Anda sendiri untuk mereka yang menginginkan otonomi lengkap. Secara pribadi, saya menggunakan layanan Yandex.Direct Mail untuk pdd.yandex.ru domain, jadi saya memiliki kunci yang dihasilkan oleh Yandex.
# mkdir -p /etc/opendkim/keys/*****.ru # cd /etc/opendkim/keys/******.ru # #-s -d opendkim-genkey -s mail -d ******.ru # 2 mail.txt mail.private # opendkim:opendkim chown opendkim:opendkim mail.* # chmod 600 mail.private
Selanjutnya, kami menghubungkan kunci rahasia DKIM kami yang dibuat atau diunduh dari Yandex.
Kami tertarik pada tiga baris ini dari konfigurasi opendkim:
InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable
File
/etc/opendkim/TrustedHosts
berisi host yang akan memiliki akses ke server opendkim untuk menandatangani email.
/ etc / opendkim / TrustedHosts127.0.0.1
localhost
######. ru
******. ru
File kedua
/etc/opendkim/KeyTable
berisi tabel kunci pribadi dan entri DKIM terkait, yang adalah sebagai berikut:
[selector]._domainkey.[domain_name]
/ etc / opendkim / KeyTablemail._domainkey.sevenlight.ru sevenlight.ru:mail:/etc/opendkim/keys/sevenlight.ru/mail.private
mail._domainkey.st-goods.ru st-goods.ru:mail:/etc/opendkim/keys/st-goods.ru/mail.private
File ketiga
/etc/opendkim/SigningTable
berisi tabel aturan untuk menandatangani surat. Ini menunjukkan surat siapa dan dengan kunci mana untuk ditandatangani.
/ etc / opendkim / SigningTable*@sevenlight.ru mail._domainkey.sevenlight.ru
*@st-goods.ru mail._domainkey.st-goods.ru
Kami membuat file-file ini, menunjukkan domain kami dan jalur kami ke file kunci. Ini menyelesaikan pengaturan opendkim.
4. Konfigurasikan sendmail
Konfigurasi sendmail sesederhana mungkin. Kita hanya perlu menambahkan baris berikut ke akhir file konfigurasi prototipe
/etc/mail/sendmail.mc
:
# starttls include(`/etc/mail/tls/starttls.m4')dnl # sendmail opendkim INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl
Untuk mengirim email secara default dari domain yang benar, Anda perlu membuat satu perubahan lagi di file
/etc/mail/sendmail.mc
Kami mencari baris yang mirip dengan ini:
MASQUERADE_AS(`st-goods.ru')dnl
Ganti dengan domain yang diinginkan. Domain inilah yang akan digunakan sebagai alamat pengirim default. Harap dicatat bahwa tanda kutip ada yang berbeda, secara tegas, tanda pertama
`
disebut gravis. Jadi untuk beberapa alasan ada dalam konfigurasi sendmail.
Sekarang kita akan menambahkan entri ke file / etc / hosts. Ini diperlukan agar sendmail mengirim pesan melalui filter. Secara eksperimental ditetapkan bahwa jika Anda tidak menambahkan entri, semua log tetap murni, tanpa menunjukkan kesalahan tunggal, tetapi surat-surat itu tidak ditandatangani.
#ipv4 echo -e "127.0.0.1 st-goods.ru" >> /etc/hosts #ipv6 echo -e "::1 st-goods.ru" >> /etc/hosts
Sekarang kita perlu membangun kembali sendmail dengan pengaturan baru.
# # "" sendmailconfig # opendkim sendmail service opendkim restart && service sendmail restart
Sekarang server sendmail kami dapat mengirimkan pesan keluar melalui server opendkim, yang menambahkan tanda tangan digital dan mengenkripsi header surat yang dikirim. Tetap mempublikasikan kunci publik untuk tuan rumah sehingga header dapat didekripsi dan memastikan bahwa header tidak diubah.
5. Pengaturan catatan DKIM TXT pada server DNS
Kunci harus ditangguhkan pada server DNS dalam string tipe TXT dengan konten berikut:
host:
mail._domainkey
nilai:
v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw
v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw
Penjelasan:
p=
ini adalah kunci publik kami
v=
mendefinisikan nomor versi DKIM
t=
set flags; flag tidak diatur secara default. Ada 2 bendera 'y' dan 's'.
y
menunjukkan bahwa DKIM dalam mode uji.
s
berarti mode ketika bagian kanan alamat email setelah @ harus benar-benar cocok dengan domain yang ditentukan dalam parameter d = DKIM tanda tangan surat itu.
Tuan rumah harus ditentukan sebagai berikut:
[selector]._domainkey
Kami memiliki pemilih email, sehingga host akan seperti ini:
mail._domainkey
Kunci publik harus
/etc/opendkim/keys/st-goods.ru/mail.txt
dari file
/etc/opendkim/keys/st-goods.ru/mail.txt
/etc/opendkim/keys/st-goods.rumail._domainkey IN TXT ("v = DKIM1; h = sha256; k = rsa;„
"P = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLFjSAqvfSrjvF0JfMkiSzqWRhXwwVPzW5OEtRFSoDVBwDxR6hMna1iESnUQ1OzbUQQPnDPbrFXkalDCAXigZqltTSAV + JQSyOwhi0b88WS3djb1IkA / qioCobjlhMFSatvcmz5kMkG8oeoHhVFQ / BE84PwDPTXRmcObDvg7meUmkYpdxeyr + tcG5ezuC + s15I00 + 6NSAaj0Tj»
«Y / Bl2e2TE / WG45wVShlQ85E8IpYixscd0qDJ9 / NbZrbWIfy8shujWVk5izNU4PqcWwW7 / H9uTkhAbMu0fgqT8W9Jv / GRVAireOCzMl13E9PVANt4o + ywqyGk38vSY8QdgJsZPDUQIDAQAB»); - Surat kunci DKIM untuk st-goods.ru
Kuncinya beralih dari p = ke kutipan terakhir. Tanda kutip sendiri harus dihapus.
6. pengaturan SPF
SPF (Sender Policy Frameword) adalah teknologi perlindungan spam lainnya, saya tidak akan membicarakannya. Hanya 2 kata untuk memahami esensi dari teknologi ini. Dalam catatan DNS suatu domain, alamat server yang memiliki hak untuk mengirim email dari domain ini dicatat dengan cara yang sama dengan kunci publik DKIM. Kami perlu mendaftarkan alamat ip server kami di entri ini. Dalam kasus saya, server Yandex juga ditambahkan ke daftar.
Berikut ini adalah contoh dari posting saya:
tuan rumah:
@
nilai:
v=spf1 a mx include:_spf.yandex.net ip4:173.249.51.13 ip6:2a02:c207:2018:3546::1 ~all
Sintaksnya sederhana. Pertama, versi spf ditunjukkan, dan kemudian setelah spasi dengan atau tanpa plus, alamat server yang memiliki hak untuk mengirim email dari domain ini ditunjukkan. Saya punya catatan a dan mx, yang berarti server dari catatan DNS A dan MX juga termasuk dalam daftar yang diizinkan. Via meliputi: alamat server Yandex ditentukan, dan kemudian alamat ipv4 dan ipv6 server saya. ~ semua berarti kegagalan lunak "kegagalan lunak". Yaitu semua alamat yang tidak terdaftar dalam diizinkan mungkin masih pergi atas kebijaksanaan server penerima. -semua akan berarti penolakan keras.
7. Pengaturan DMARC
Paku terakhir yang menembus benteng gmail adalah DMARC. DMARC menetapkan apa yang harus dilakukan dengan email yang gagal SPF atau DKIM.
Kami melakukan semuanya persis sama melalui catatan DNS TXT.
host:
_dmarc
nilai:
v=DMARC1; p=none
v=DMARC1; p=none
Di sini kami menetapkan bahwa jika surat-surat itu tidak lulus SPF atau DKIM, tidak ada yang perlu dilakukan. Anda dapat menempatkan p = menolak. Maka surat-surat seperti itu akan ditolak.
Periksa
Kirim surat kepada diri Anda sendiri.
echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com
Kami melihat entri terbaru di log surat.
tail -f /var/log/mail.log | grep dkim
Baris yang mirip dengan ini akan muncul:
Jun 11 22:07:55 sevenlight opendkim[6473]: w5BK7sl9008069: DKIM-Signature field added (s=mail, d=st-goods.ru)
Jika ada garis, maka server sendmail dan opendkim telah bekerja bersama dan menandatangani surat Anda. Jika tidak ada garis seperti itu, lihat bagian "Kemungkinan Masalah".
Sekarang mari kita lihat apa yang terjadi di kotak surat. Buka surat dan tekan tombol panah ke bawah di sudut kanan atas surat. Di menu tarik-turun, pilih item "Tampilkan yang asli".
Inilah yang saya dapatkan:
Message ID <201806112007.w5BK7sUS008068@******.ru> Created on: 11 June 2018 at 22:07 (Delivered after 2 seconds) From: info@*****.ru To: legale.legale@gmail.com Subject: №2221 - ******.ru SPF: PASS with IP 2a02:c207:2018:3546:0:0:0:1 Learn more DKIM: 'PASS' with domain *****.ru Learn more DMARC: 'PASS' Learn more
LABA $$$
Kemungkinan masalah
Saya sungguh berharap bahwa tidak perlu membaca bagian ini, tetapi tekniknya adalah hal yang rumit ... Terkadang tidak jelas siapa yang bekerja untuk siapa.
Pertama, periksa untuk melihat apakah Anda melakukan semuanya dalam urutan yang ditentukan dalam instruksi.
Pertama, periksa file / etc / hosts untuk kebenaran perubahan di dalamnya. Saya memiliki banyak masalah di sana. Selanjutnya, periksa log sistem untuk kesalahan dkim. Ketika saya memilih-milih, kebetulan saya menemukan situasi di mana tidak mungkin membaca opendkim kunci rahasia, meskipun saya menetapkan opendkim pengguna sebagai pemilik file. Selanjutnya, Anda harus hati-hati mempelajari log eksekusi perintah sendmailconfig. Saya punya kasus yang saya gunakan tanda kutip tunggal yang biasa bukan kerikil yang ditetapkan, dan sendmailconfig bersumpah ini. Jika semuanya gagal tulis aku dan terus berusaha.