Setup DKIM (DomainKeys) untuk Ubuntu, Postfix dan Mailman

22

Saya menjalankan Ubuntu 12.04 dengan Postfix dan Mailman. Saya ingin mengatur DKIM . DomainKeys Identified Mail, atau DKIM, adalah penerus dari "DomainKeys" Yahoo. Ini menggabungkan Surat Identifikasi Cisco.

Apa langkah-langkah untuk mengatur ini?

Apakah opendkim direkomendasikan?

Satu-satunya referensi yang saya miliki adalah HowToForge , tapi saya lebih suka mendapatkan bantuan di sini (bahkan jika itu hanya konfirmasi langkah-langkah di tautan itu). Sebenarnya, saya pikir info di HowToForge sudah usang karena menyebutkan dkim-filter bukan opendkim.

MountainX untuk Monica Cellio
sumber

Jawaban:

39

openDKIM dan Postfix pada Ubuntu Server 12.04LTS

Saya akan mencoba untuk kembali dan memformat ini lebih baik. Tetapi karena ada permintaan untuk mengirim jawaban saya, saya ingin mempostingnya sekarang daripada menunggu sampai saya punya waktu untuk memformatnya dengan benar. Karena kurangnya waktu, saya membungkus seluruh jawaban saya dalam blockquote. Saya harap solusi ini bermanfaat.

Ini adalah referensi saya:

dan Wikipedia memiliki entri yang bagus tentang masalah ini

Minimal Anda perlu:

  • Rooting akses ke server email Anda
  • Akses untuk memperbarui catatan dns untuk domain Anda

Instal opendkim dari repositori:

# sudo apt-get install opendkim opendkim-tools

Anda harus memutuskan "pemilih" apa yang ingin Anda gunakan. Pemilih pada dasarnya adalah kata untuk menggambarkan kunci yang ingin Anda gunakan. Di sini saya akan menggunakan pemilih 201205 karena kunci menjadi valid pada Mei 2012 (licik eh?). Saya memberikan dua contoh untuk variasi, yang diharapkan akan menambah kejelasan. Anda hanya perlu menghasilkan SATU kunci. Namun, saya memberikan kedua contoh sehingga Anda dapat membandingkannya.

  • 201205 (kunci 1)
  • my_selector (kunci 2)

Domain saya akan menjadi example.com, tetapi saya akan menggunakan subdomain untuk contoh kedua saya:

  • example.com (kunci 1)
  • mail.example.com (kunci 2)

Saya memutuskan untuk bekerja di direktori berikut:

# mkdir /etc/opendkim/
# cd /etc/opendkim

Buat kunci di direktori saat ini, menggunakan pemilih dan domain yang Anda pilih.

# opendkim-genkey -s 201205 -d example.com

Anda mungkin atau mungkin tidak perlu mengubah kepemilikan. Lihat detail dalam contoh saya untuk kunci kedua di bawah ini untuk mengetahui kepemilikan dan izin apa.

Pertama, Anda harus memeriksa apakah ada opendkimpengguna (ID pengguna / grup Anda mungkin berbeda):

# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false

Dan Anda mungkin perlu melakukan ini:

# chmod 700 /var/run/opendkim

CATATAN: Dua perintah berikut ini TIDAK diperlukan di Ubuntu 12.04. Tetapi jika perintah di atas tidak menunjukkan bahwa opendkim pengguna telah diatur dengan benar, lakukan seperti ini:

# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private   
# cat 201205.private 
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----

Sekarang periksa kunci publik dan perhatikan ada bug (di openDKIM 2.5.2 di Ubuntu 12.04)! Di mana berisi ;=rsa;, itu harus mengandung ;k=rsa;. Tidak kada. Silakan masukkan.

# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Setelah diperbaiki, akan terlihat seperti ini:

201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Selain itu, Anda mungkin perlu melarikan diri dari titik koma seperti ini. Jika Anda tidak ingin komentar akhir, hapus saja. Perhatikan juga bahwa Anda harus menambahkan tanda t = y untuk menunjukkan kepada server penerima bahwa Anda menguji DKIM tetapi belum menggunakannya secara aktif. Anda dibiarkan dengan catatan sumber daya yang layak:

201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Anda harus mempublikasikan konten kunci publik di atas ke server DNS resmi Anda. Saya sarankan menggunakan catatan TXT. Tampaknya ada sedikit kontroversi tentang apakah akan menggunakan catatan SPF atau kedua jenis. Setelah sedikit membaca, saya memilih untuk tetap menggunakan tipe catatan TXT secara eksklusif, meskipun saya tidak percaya ini adalah kata terakhir pada topik ini.

Anda harus menggunakan TTL pendek (waktu untuk hidup) sehingga Anda dapat mengubah kunci tanpa menunggu usia untuk diperbanyak melalui DNS. Saya menggunakan 180 detik.

Contoh kedua menghasilkan sepasang kunci agak sulit bagi saya. Saya akan menjelaskan apa yang saya lakukan. Elemen pertama adalah saya menggunakan nilai domain "example.com" meskipun kuncinya akan digunakan untuk "mail.example.com". Saya sampai pada ini melalui coba-coba. Ini berfungsi, saat menggunakan "mail.example.com" tidak berfungsi. Sayangnya, saya tidak mengetahui alasan di balik ini. Ini benar-benar satu-satunya perbedaan yang saya temui, tetapi cukup meresahkan sehingga saya merasa harus mendokumentasikan pengalaman saya menggunakan subdomain. Tidak ada tutorial tingkat awal lainnya yang saya temukan melakukan ini. Hasilkan kunci kedua:

opendkim-genkey -s my_selector -d example.com

periksa kepemilikan dan izin kunci pribadi, seperti di atas. Seperti apa bentuknya:

# ls -la /etc/opendkim
-rw-------  1 opendkim opendkim  891 May 10 07:44 my_selector.private

Setelah menerbitkan catatan DNS, periksa dengan dig. Itu harus mengembalikan apa yang Anda masukkan dalam catatan sumber daya (RR).

$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Sekarang, coba kuncinya. Perintah di bawah ini menganggap Anda berada di direktori tempat kuncinya berada (/ etc / opendkim untuk saya).

# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Hasil ini diharapkan. "Kunci tidak aman" tidak menunjukkan kesalahan. Ini adalah konsekuensi yang diharapkan dari tidak menggunakan DNSSSEC. DNSSEC akan datang, tetapi belum siap untuk prime time, menurut bacaan saya.

Contoh dengan kunci 2:

# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Perhatikan bahwa opendkim melaporkan bahwa kunci tidak aman. Ini berkaitan dengan fakta bahwa DNSSEC tidak diimplementasikan pada server DNS saya dan secara teoritis seseorang dapat mencegat pencarian DNS dan menggantinya dengan kunci mereka sendiri.

Edit file konfigurasi OpenDKIM:

# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain                  example.com
KeyFile                 /etc/opendkim/201205.private
Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

Jika Anda menggunakan contoh kunci ke-2 saya, dengan domain yang ditargetkan "mail.example.com" entri tersebut masih hanya merujuk domain utama:

Domain                  example.com
KeyFile                 /etc/dkim/my_selector.private
Selector                my_selector 
-----

Catatan dari salah satu sumber saya: Jika Anda menjalankan beberapa instance dari Postfix, Anda perlu menambahkan ini ke opendkim.conf untuk setiap instance (atau yang Anda ingin gunakan opendkim)

Buat file dengan editor teks Anda /etc/opendkim/TrustedHosts:

Tambahkan domain, nama host, dan / atau ip yang harus ditangani oleh OpenDKIM. Jangan lupa localhost.

127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)

(baris terakhir di atas mungkin tidak diperlukan. Jika Anda memiliki alamat IP untuk ditambahkan, pastikan Anda menggunakan alamat Anda sendiri, bukan contoh di atas.)

Edit /etc/default/opendkim:

Batalkan komentar pada baris ini dan gunakan port 8891:

SOCKET="inet:8891@localhost" # listen on loopback on port

Pastikan firewall Anda (iptables) memungkinkan loopback di localhost:

sudo iptables -A INPUT -i lo -j ACCEPT

Selanjutnya, Buat file dengan editor teks Anda /etc/opendkim/KeyTabledan tambahkan domain ke KeyTable

Tambahkan baris:

#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private

Selanjutnya Buat file dengan editor teks Anda /etc/opendkim/SigningTabledan tambahkan domain ke SigningTable

Saya menunjukkan kedua contoh. Perhatikan bahwa untuk kunci kedua saya, sekarang saya harus menggunakan nama domain lengkap "mail.example.com":

example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com

Perhatikan bahwa dalam OpenDKIM 2.0.1 nama domain peka huruf besar-kecil. Dalam contoh ini kami menggunakan versi OpenDKIM yang lebih baru dan ini tampaknya bukan masalah.

Konfigurasikan postfix. Edit /etc/postfix/main.cf dan tambahkan baris ke akhir

milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891

Juga ubah nama host:

#myhostname = localhost         #original
myhostname = mail.example.com

Anda juga harus mengubah entri yang sesuai di / etc / hosts. Perubahan ini efektif setelah reboot (walaupun Anda dapat mengaturnya langsung dengan perintah:) hostname NEW_NAME.

Mulai ulang postfix dan opendkim jika Anda tidak me-reboot:

# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix   [ OK ]
 * Starting Postfix Mail Transport Agent postfix   [ OK ] 

Pengujian

Cara terbaik untuk memeriksa apakah surat yang Anda tandatangani sedang diautentikasi dan bahwa catatan DNS Anda telah diatur dengan benar adalah dengan menggunakan salah satu layanan pengujian gratis. Saya menggunakan ini:

Masing-masing akan memberi tahu Anda jika semuanya berfungsi dengan baik, dan memberi Anda beberapa petunjuk tentang pemecahan masalah jika diperlukan.

Jika Anda memiliki akun Gmail, Anda juga dapat mengirim pesan yang ditandatangani di sana untuk pengujian cepat dan mudah.

Setelah Anda senang bahwa semuanya baik-baik saja, Anda dapat menghapus bendera pengujian dalam catatan DNS TXT dan meningkatkan TTL.

Selesai!

MountainX untuk Monica Cellio
sumber
Berfungsi secara sempurna dengan tepat. Panduan yang baik terima kasih.
Aki
Gunakan -b 1024 untuk menghasilkan kunci 1024 bit. Itu suatu keharusan untuk mendapatkan ditandatangani gmail saya!
Prashant Singh
1
Harap dicatat di opendkim.conf tiga parameter "Domain", "KeyFile" dan "Selector" diabaikan ketika menggunakan "SigningTable" dan "KeyTable". Tidak yakin apakah ini berubah di beberapa titik tetapi perlu disebutkan ( opendkim.org/opendkim.conf.5.html )
billynoah
0

Ini panduan yang bagus.

Ini menjelaskan bahwa opendkim yang memang dianjurkan dan bahwa langkah-langkah untuk menerapkan penandatanganan dkim Anda adalah sama dengan dkim-filter.

dkim-milter tidak lagi dikembangkan. Penulis aslinya telah menggunakan sumbernya dan sekarang sedang mengembangkan opendkim. Untuk rilis Lucid dan yang lebih baru, opendkim lebih disukai daripada dkim-filter. Petunjuk pada halaman ini harus sama (hanya dengan nama paket yang disesuaikan sesuai kebutuhan).

BTW Domainkeys adalah pendahulu DKIM yang sudah usang. Tambahkan data TXT ke Zona DNS Anda untuk SPF dan DKIM tetapi tidak perlu lagi repot dengan Domainkeys.

iainH
sumber
Artikel yang Anda tautkan sudah usang. opendkim adalah paket yang digunakan sekarang. Saya sedang mengerjakan pengaturannya ...
MountainX untuk Monica Cellio
Saya menghargai pembaruan dari pengalaman Anda karena saya akan mengganti server dari Exim4 ke Postfix-Dovecot dan akan mencari panduan terbaru.
iainH
Saya memposting solusi saya tetapi saya tidak punya waktu untuk memformatnya. Anda (atau siapa pun) dipersilakan untuk memformatnya. Tetapi catatan saya sangat luas, jadi saya ingin Anda memiliki akses ke mereka tanpa penundaan. Saya harap mereka membantu.
MountainX untuk Monica Cellio
-1

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

Saya selalu memastikan untuk melewati beberapa panduan tentang apa saja. Tut ini pada set-up berfungsi, saya baru saja memverifikasi dan memvalidasi yang ini. Namun, Anda mungkin ingin menampilkan contoh TXT untuk catatan domain agar lebih terperinci. Orang mungkin menjadi bingung dan secara eksplisit memasukkan semua kunci itu sendiri ke dalam nilai p, yang saya tidak yakin sepenuhnya benar. yaitu ... termasuk ----- AWAL KUNCI PUBLIK ----- dan ----- AKHIR KUNCI PUBLIK -----. Itu mungkin membuat beberapa orang bingung. Pastikan untuk menempatkan hanya bagian enkripsi dan bukan spidol.

Tom
sumber
3
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Braiam