Beberapa hari yang lalu mail server kantor bermasalah, semua email yang dikirim ke yahoo.com ditolak.

Sep  3 14:53:49 linux-xx4k postfix/smtp[3760]: 951A61AD555: host d.mx.mail.yahoo.com
[66.196.82.7] refused to talk to me: 421 Message from (xxx.xxx.xxx.xxx) temporarily
deferred - 4.16.50. Please refer to
http://help.yahoo.com/help/us/mail/defer/defer-06.html

Alhasil semua email konfirmasi untuk nasabah kantor yang berdomain yahoo.com mental semua😦, menghubungi pihak yang bersangkutan juga tak kujung menyelesaikan masalah, akhirnya googling dan menemukan salah satu solusinya adalah memasang domainkeys. Wah bakal oprek2 lagi nigh pikir gw.

Pertama gw coba mengecek kelengkapan yang sudah ada diserver gw.

Crypt::OpenSSL::RSA
Mail::Address
MIME::Base64
Net::DNS
Test::More
Text::Wrap
Mail::DomainKeys

Buat yang malas intall satu satu bisa pake modul CPAN untuk menginstallnya, caranya cukup

perl -MCPAN -e'CPAN::Shell->install("Crypt::OpenSSL::RSA")'
perl -MCPAN -e'CPAN::Shell->install("Mail::Address")'
perl -MCPAN -e'CPAN::Shell->install("MIME::Base64")'
perl -MCPAN -e'CPAN::Shell->install("Net::DNS")'
perl -MCPAN -e'CPAN::Shell->install("Test::More")'
perl -MCPAN -e'CPAN::Shell->install("Text::Wrap")'
perl -MCPAN -e'CPAN::Shell->install("Email::Address")'
perl -MCPAN -e'CPAN::Shell->install("Mail::DomainKeys")'

Setelah semua kelengkapan terpenuhi donglot dan install domainkeys

#wget http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz
#tar xvf dkfilter-0.11.tar.gz
#cd dkfilter-0.11
#./configure --prefix=/usr/local/dkfilter
#make install
#useradd dkfilter

Setelah selesai mengkompail domainkey dilanjutkan dengan membuat private dan public key

cd /usr/local/dkfilter
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key

Kemudian dilanjutakan memodifikasi konfigurasi dns domain yang akan dipasang domainkeys, tambahkan

_domainkey.domainlu.com        	IN TXT  “t=y; o=-;”
namaselector._domainkey.domainlu.com	IN TXT "k=rsa; p=ISI_DARI_PUBLIC_KEY;"

Isi dari p adalah isi dari public key, tanpa menyertakan —–BEGIN PUBLIC KEY—– dan —–END PUBLIC KEY—– kalau anda bingung bisa melihat contoh dibawah, atau melalui link berikut ini dan ini

_domainkey.madanisecurities.com            IN TXT  t=y; o=-;
linux-xx4k._domainkey.madanisecurities.com    IN TXT  k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBTA0V67MSeUujMExQn+jpxVpX 7FdvXVdjtcH7vKdFhKUWhFcFAAl6HrAnQ7as2CUbt2uo/v37sJKmI5RquXT7GFbW Upc3YuAK9sxvOkYSxaniqGQuGY8m8lxmVduTkDGj/iikPPGjE7IbklKQTOJScdIZ 77S1F4QGHQZmwjdGDQIDAQAB;

Setelah semua siap sekarang kita menuju ke tahapan seting email masuk, pertama test dulu

/usr/local/dkfilter/bin/dkfilter.in --hostname=hostname 127.0.0.1:10025 127.0.0.1:10026

Jika berjalan dengan sempurna buatlah skrip untuk menjalankannya atau bisa dicari disini, selajutnya diikuti dengan mengedit master.cf

#
# Before-filter SMTP server. Receive mail from the network and
# pass it to the content filter on localhost port 10025.
#
smtp      inet  n       -       n       -       -       smtpd
    -o smtpd_proxy_filter=127.0.0.1:10025
    -o smtpd_client_connection_count_limit=10
#
# After-filter SMTP server. Receive mail from the content filter on
# localhost port 10026.
#
127.0.0.1:10026 inet n  -       n       -        -      smtpd
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o receive_override_options=no_unknown_recipient_checks

Sekarang setting email keluar, test lagi

dkfilter.out –keyfile=/lokasi/private.key –selector=nama-selector-yang-lu-kasih-didns-tadi –domain=domainlu.com –method=nofws 127.0.0.1:10027 127.0.0.1:10028

Jika berjalan dengan sempurna buatlah skrip untuk menjalankannya atau bisa dicari disini, selajutnya diikuti dengan mengedit master.cf

# modify the default submission service to specify a content filter
# and restrict it to local clients and SASL authenticated clients only
#
submission  inet  n     -       n       -       -       smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=yes
-o content_filter=dksign:[127.0.0.1]:10027
-o receive_override_options=no_address_mappings
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

#
# specify the location of the DomainKeys signing filter
#
dksign    unix  -       -       n       -       10      smtp
-o smtp_send_xforward_command=yes
-o smtp_discard_ehlo_keywords=8bitmime

#
# service for accepting messages FROM the DomainKeys signing filter
#
127.0.0.1:10028 inet  n  -      n       -       10      smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

Sekarang tinggal reload postfixnya perintahnya cukup postfix reload, ingat sebelumnya pastikan dkfilter.in dan dkfilter.out sudah berjalan sebelum mereload/menjalankan postfix.

Jika semua beres makan setiap pengiriman melalui port 587 akan ditandatangain otomatis oleh dksign, gimana biar port 25 juga ditanda tangani? ya edit saja master.cfnya tambahkan opsi  -o content_filter=dksign:[127.0.0.1]:10027 pada smtp

tampilan header yang tidak disign

tampilan header yang disigned oleh dksign

jika lu ngerasa ada text yang terpotong silahkan membacanya tanpa css, browsermu gag support tanpa css? ya ganti dong😀

url terkait yang mungkin dapat menambah wawasan

http://www.postfix.org
http://antispam.yahoo.com/domainkeys
http://jason.long.name/dkfilter/