Dengan semakin ganasnya SPAM dan bisnis surel, Universitas Indonesia pun selalu memperbaharui konfigurasi surel agar selalu aman dan nyaman. Selama inisaya hanya menerapkan SPF, DKIM, ADSP, DMARC dan lain sebagainya ke sub domain UI. Kali ini, untuk domain global UI, DMARC pun diterapkan.
Saya membuka kotak pandora! Ternyata ada domain-domain di bawah UI yang masih perlu dikonfigurasi. Misalnya, untuk domain yang berbasis Google Apps (GMail), saya menerapkan minimum konfigurasi SPF dan DMARC. Namun, ini semua harus ditambahkan satu persatu.
Beruntung, DMARC menyediakan mekanisme laporan berkala yang bisa dipakai oleh UI untuk melihat bagaimana domainnya digunakan ke tempat lain. Laporan DMARC berformat XML. Untuk ini, saya menuliskan cara saya membaca XML tersebut dengan perkakas yang sudah ada.
Saya malas membuat pencacah sendiri. Untungnya, Dave dari TechSneeze menyediakan perkakas kecil untuk itu. Ada dua bagian yang perlu dipasang, pencacah dan pembaca. Berhubung saya tiba-tiba jadi malas menulis, saya percepat saja.
Basisdata
Pencacah ini memasukkan XML ke dalam basisdata. Basisdata MySQL ini digunakan untuk menyimpan hasil proses pelaporan DMARC. Mari buat sebuah basisdata:
sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "create database opendmarc;" sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "grant all privileges on opendmarc.* to 'opendmarc'@'localhost' identified by 'p4$sW0Rd';" sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "flush privileges;"
Jangan lupa mengganti sandi dengan yang benar!
Pencacah
Pasang paket-paket pendukung.
sudo apt-get install libmail-imapclient-perl libmime-tools-perl libxml-simple-perl \ libclass-dbi-mysql-perl libio-socket-inet6-perl libio-socket-ip-perl libperlio-gzip-perl \ libmail-mbox-messageparser-perl unzip
Unduh dan masuk ke direktori.
git clone https://github.com/techsneeze/dmarcts-report-parser.git cd dmarcts-report-parser
Salin berkas dmarcts-report-parser.conf.sample menjadi dmarcts-report-parser.conf yang akan dipakai sebagai konfigurasi. Ubah login MySQL di berkas tersebut.
$dbname = 'opendmarc'; $dbuser = 'opendmarc'; $dbpass = 'p4$sW0Rd';
Sudah bisa digunakan. Cara saya menggunakannya:
zcat /tmp/linkedin.com\!ui.ac.id\!1513036800\!1513123200\!chips.xml.gz | ./dmarcts-report-parser.pl -x -
Saya suka cara seperti ini. Kalau misalnya semua berkas laporan ditaruh di sebuah direktori, maka tinggal:
for report in `find /tmp/reports/ -type f `; do zcat $report | ./dmarcts-report-parser.pl -x - ; done
Kalau membaca konfigurasi, perkakas ini bisa membaca dari IMAP. Tetapi saya belum mencobanya.
Pembaca
Salin GIT:
rm -rf /var/www/html git clone https://github.com/techsneeze/dmarcts-report-viewer.git html sudo mv html /var/www sudo chown -R 33:33 /var/www/html
Pasang PHP-FPM dan NGINX. Berkas utamanya ada di /var/www/html. Saya terlalu malas untuk mengonfigurasi. Tapi, ini kira-kira konfigurasi saya:
cat >> /etc/nginx/sites-enabled/default << EOF server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.php?$query_string; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { include snippets/fastcgi-php.conf; # With php7.0-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.0-fpm.sock; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } EOF
Jangan lupa dmarcts-report-viewer-config.php.sample menjadi dmarcts-report-viewer-config.php dan ubah $dbname, $dbuser, dan $dbpass seperti konfigurasi pencacah.
Silakan diubah sesuai selera. Nanti kalau sudah selesai, bisa dilihat di peramban:
Kalau saya tidak sedang sibuk dan malas menulis, saya akan mencoba membagikan bagaimana mengonfigurasi SPF, DKIM, ADSP, DMARC dan lain sebagainya. Kalau ingat, ya…. Tak janji.