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:

DMARC Report

DMARC Report

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.

Bacaan Lebih Lanjut