Category: Relay

  • OpenDKIM, Selector, dan Perbedaan RSA Key Size

    OpenDKIM, Selector, dan Perbedaan RSA Key Size

    OpenDKIM

    OpenDKIM merupakan aplikasi open-source yang digunakan untuk menambahkan tanda tangan digital pada email menggunakan metode DomainKeys Identified Mail (DKIM).

    Tujuannya adalah membantu server penerima memastikan bahwa email telah ditandatangani menggunakan private key yang sesuai dengan domain penandatangan dan bahwa bagian email yang dilindungi tidak mengalami perubahan selama pengiriman.

    OpenDKIM umumnya digunakan bersama mail server seperti Postfix, termasuk pada infrastruktur SMTP Relay dan mail gateway.

    Cara Kerja OpenDKIM

    Secara sederhana, proses DKIM bekerja sebagai berikut:

    1. Email dikirim: Mail server memproses email keluar.
    2. DKIM Signing: OpenDKIM menandatangani email menggunakan private key.
    3. Verifikasi: Server penerima mengambil public key dari DNS untuk memverifikasi tanda tangan.
    4. Hasil: Jika tanda tangan valid, pemeriksaan DKIM menghasilkan status pass.

    DKIM membantu memverifikasi keaslian tanda tangan email, tetapi tidak secara otomatis menjamin email bebas dari spam.

    DKIM Selector

    Salah satu komponen penting dalam OpenDKIM adalah selector. Selector merupakan nama yang digunakan untuk mengidentifikasi pasangan private key dan public key dalam sebuah domain.

    Contohnya, domain example.com menggunakan selector bernama mail. Maka DNS record DKIM berada pada:

    mail._domainkey.example.com

    Satu domain dapat memiliki beberapa selector, misalnya:

    • default._domainkey.example.com
    • mail._domainkey.example.com
    • relay._domainkey.example.com

    Dengan beberapa selector, setiap mail server dapat menggunakan pasangan key berbeda tanpa harus menggunakan domain yang berbeda.

    RSA Key Size pada DKIM

    Ketika membuat DKIM key, kita dapat menentukan ukuran RSA key yang digunakan. Beberapa ukuran yang dikenal adalah 512-bit, 1024-bit, 2048-bit, dan 4096-bit. Ukuran ini merupakan panjang RSA key, bukan ukuran selector.

    RSA Key SizeKeterangan
    512-bitTidak aman dan tidak diperbolehkan oleh standar DKIM saat ini
    1024-bitUkuran minimum yang diperbolehkan
    2048-bitDirekomendasikan karena keamanan lebih kuat
    4096-bitLebih besar dan didukung untuk verifikasi, tetapi umumnya tidak diperlukan

    Contoh Membuat DKIM Key 2048-bit

    Pada server yang sudah memiliki OpenDKIM Tools, kita dapat membuat RSA key 2048-bit menggunakan perintah:

    opendkim-genkey -b 2048 -s mail -d example.com

    Keterangan:

    • -b 2048 menentukan ukuran RSA key.
    • -s mail menentukan selector.
    • -d example.com menentukan domain.

    Perintah tersebut menghasilkan dua file:

    • mail.private — private key untuk menandatangani email.
    • mail.txt — berisi DNS TXT record untuk publikasi public key.

    Public key dipublikasikan melalui DNS, sedangkan private key disimpan dan digunakan oleh OpenDKIM.

    Kesimpulan

    OpenDKIM merupakan salah satu solusi untuk menerapkan DKIM signing pada mail server. Dalam konfigurasinya, terdapat dua hal yang perlu dibedakan, yaitu selector sebagai identitas key dan RSA key size sebagai ukuran kunci kriptografi.

    RSA 512-bit sudah tidak memenuhi standar keamanan DKIM saat ini. Sementara itu, RSA 1024-bit masih diperbolehkan sebagai ukuran minimum, tetapi RSA 2048-bit lebih direkomendasikan untuk konfigurasi baru.

    Referensi:

  • Simulasi Error SMTP 451 Temporary Lookup Failure dengan Postfix

    Simulasi Error SMTP 451 Temporary Lookup Failure dengan Postfix

    Error 451 Temporary lookup failure sering muncul di lingkungan produksi dan bikin email nyangkut di antrian dengan status deferred. Supaya paham perilakunya tanpa mengganggu server klien, saya buat lab kecil berisi dua VM Postfix, satu sebagai pengirim dan satu sebagai penerima. Panduan ini mencakup instalasi, pengujian normal, simulasi error 451, lalu pemulihan ke kondisi normal.

    Informasi lab

    PeranHostnameIPOS
    Pengirimsender.lab192.168.14.22Ubuntu 24.04
    Penerimareceiver.lab192.168.14.23Ubuntu 24.04

    Prasyarat: akses root di kedua VM, koneksi internet untuk instalasi paket, dan kedua VM berada di segmen jaringan yang sama.

    1. Persiapan

    Tambahkan entri berikut di /etc/hosts pada kedua server:

    192.168.14.22 sender.lab
    192.168.14.23 receiver.lab

    Set hostname sesuai perannya:

    hostnamectl set-hostname sender.lab

    Pastikan saling terjangkau:

    ping -c 3 receiver.lab

    2. Instalasi Postfix

    Jalankan di kedua server:

    apt update
    apt install postfix mailutils -y

    Saat wizard muncul, pilih Internet Site, lalu isi System mail name dengan sender.lab atau receiver.lab sesuai server.

    Cek status service:

    systemctl status postfix

    Status harus active (running).

    3. Konfigurasi server penerima

    Edit /etc/postfix/main.cf di receiver, pastikan baris berikut ada:

    myhostname = receiver.lab
    mydestination = receiver.lab, localhost.lab, localhost
    inet_interfaces = all
    mynetworks = 127.0.0.0/8, 192.168.14.0/24

    Buat akun lokal sebagai tujuan email:

    adduser user
    systemctl restart postfix

    Verifikasi Postfix listen di port 25:

    ss -tlnp | grep :25

    Output:

    4. Konfigurasi server pengirim

    Secara default Postfix mencari tujuan lewat DNS (smtp_host_lookup = dns), jadi entri /etc/hosts saja tidak cukup. Karena di lab ini tidak ada DNS internal, arahkan langsung ke IP receiver. Edit /etc/postfix/main.cf di sender:

    myhostname = sender.lab
    relayhost = [192.168.50.20]

    Tanda kurung siku [ ] membuat Postfix melewati pencarian MX dan langsung konek ke IP tersebut. Lalu reload:

    systemctl reload postfix

    Uji koneksi SMTP dari sender:

    telnet receiver.lab 25

    Harus muncul banner seperti 220 receiver.lab ESMTP Postfix. Keluar dengan mengetik quit.

    5. Uji pengiriman normal

    Kirim email percobaan dari sender:

    echo "Test kondisi normal" | mail -s "SMTP Test" user@receiver.lab

    Pantau log di sender:

    tail -f /var/log/mail.log

    Output yang benar:

    2026-07-24T07:37:35.394338+00:00 sender postfix/smtp[27206]: 4DD982C6: to=<user@receiver.lab>, relay=192.168.14.23[192.168.14.23]:25, delay=0.09, delays=0.02/0.02/0.03/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 5A88D6AF79)

    Ini jadi baseline sebelum kita rusak sengaja.

    6. Simulasi error 451

    Di server penerima, tambahkan restriction berikut di /etc/postfix/main.cf:

    smtpd_recipient_restrictions =
        check_recipient_access hash:/etc/postfix/recipient_access,
        permit_mynetworks,
        reject_unauth_destination

    Buat file /etc/postfix/recipient_access dengan isi:

    user@receiver.lab 451 4.3.0 Temporary lookup failure

    Format 4NN text di access table membuat Postfix membalas dengan kode dan pesan tersebut. Kode 4.3.0 ditulis eksplisit supaya DSN di sisi pengirim sama persis dengan kasus produksi. Generate database lalu reload:

    postmap /etc/postfix/recipient_access
    systemctl reload postfix

    Catatan: jika postmap gagal karena tipe hash tidak tersedia, cek dengan postconf -m dan ganti ke lmdb.

    7. Uji ulang dan baca log

    Kirim lagi dari sender:

    echo "Test 451" | mail -s "451 test" user@receiver.lab

    Log di sender akan berbunyi:

    2026-07-24T07:53:18.718740+00:00 sender postfix/smtp[27250]: 9CED3332: to=<user@receiver.lab>, relay=192.168.14.23[192.168.14.23]:25, delay=0.09, delays=0.03/0.01/0.03/0.01, dsn=4.3.0, status=deferred (host 192.168.14.23[192.168.14.23] said: 451 4.3.0 <user@receiver.lab>: Recipient address rejected: Temporary lookup failure (in reply to RCPT TO command))

    Cek antrian:

    postqueue -p

    Output

    Email tetap tertahan dan akan dicoba ulang sesuai maximal_queue_lifetime (default 5 hari). Ini yang membedakan error 4xx dari 5xx.

    8. Kembalikan ke kondisi normal

    Kosongkan file access lalu regenerate:

    : > /etc/postfix/recipient_access
    postmap /etc/postfix/recipient_access
    systemctl reload postfix

    Paksa antrian jalan lagi:

    postqueue -f

    Log akan berubah menjadi dsn=2.0.0, status=sent dengan balasan 250 2.0.0 Ok.

    2026-07-24T07:56:01.180149+00:00 sender postfix/qmgr[27194]: 9CED3332: from=<root@sender.lab>, size=317, nrcpt=1 (queue active)
    2026-07-24T07:56:01.258620+00:00 sender postfix/smtp[27271]: 9CED3332: to=<user@receiver.lab>, relay=192.168.14.23[192.168.14.23]:25, delay=163, delays=163/0.03/0.04/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 314AD6AF79)
    2026-07-24T07:56:01.258793+00:00 sender postfix/qmgr[27194]: 9CED3332: removed

    Ringkasan

    SkenarioBalasan SMTPStatus di antrian
    Server penerima normal250 2.0.0 Oksent
    Gangguan sementara di penerima451 4.3.0 Temporary lookup failuredeferred, retry otomatis
    Alamat ditolak permanen550 5.x.xbounced, tidak retry

    Troubleshoot

    GejalaPenyebabSolusi
    Host or domain name not foundSender masih pakai lookup DNSSet relayhost = [IP_RECEIVER] atau smtp_host_lookup = native, dns
    Connection refused port 25inet_interfaces = loopback-only atau firewallSet inet_interfaces = all, buka port 25
    Relay access deniedDomain tujuan tidak ada di mydestinationTambahkan receiver.lab ke mydestination
    554 Too many hopsMail loop antar serverPeriksa relayhost, mydestination, dan transport_maps
    /var/log/mail.log kosongrsyslog tidak terpasangGunakan journalctl -u postfix -f

    Lab ini cukup ringan tapi mencakup pola error yang paling sering ditemui saat troubleshooting Postfix, Zimbra, Carbonio, maupun SMTP relay. Semoga bermanfaat.

    Referensi