Category: Panduan

  • Cara Mengatasi zmamavisdctl Gagal Start Setelah Upgrade Zimbra NE 10.1.20

    Cara Mengatasi zmamavisdctl Gagal Start Setelah Upgrade Zimbra NE 10.1.20

    Saya memiliki server Zimbra Collaboration Network Edition 10.1.16 yang sudah cukup lama tidak diperbarui. Setelah melakukan upgrade (patching) ke Zimbra 10.1.20, seluruh proses upgrade berjalan dengan baik, namun terdapat satu masalah, yaitu service Amavis (zmamavisdctl) gagal dijalankan.

    Akibatnya:

    • Service amavis berstatus Stopped.
    • Service antivirus dan mta juga ikut berhenti.
    • Email tidak dapat diproses karena Postfix gagal terhubung ke Amavis.

    Gejala

    Cek status service:

    zmcontrol status

    Hasil:

    zimbra@mail:~$ zmcontrol status
    Host mail.zimbra.lab
            amavis                  Stopped
                    amavisd is not running.
            antispam                Stopped
                    zmamavisdctl is not running
            antivirus               Stopped
                    zmamavisdctl is not running
            convertd                Running
            ldap                    Running
            license-daemon          Running
            logger                  Running
            mailbox                 Running
            memcached               Running
            mta                     Stopped
                    zmamavisdctl is not running
            onlyoffice              Running
            opendkim                Running
            proxy                   Running
            service webapp          Running
            snmp                    Running
            spell                   Running
            stats                   Running
            zimbra webapp           Running
            zimbraAdmin webapp      Running
            zimlet webapp           Running
            zmconfigd               Running

    Log Postfix menunjukkan:

    connect to 127.0.0.1:10026: Connection refused

    Artinya Amavis tidak berhasil membuka port filtering SMTP.


    Proses Troubleshooting

    1. Pastikan penyebab

    Jalankan:

    su - zimbra
    
    /opt/zimbra/common/sbin/amavisd \
    -X no_conf_file_writable_check \
    -c /opt/zimbra/conf/amavisd.conf \
    test-config

    Jika tidak ada output, berarti konfigurasi Amavis valid.


    2. Jalankan Amavis secara foreground

    /opt/zimbra/common/sbin/amavisd \
    -X no_conf_file_writable_check \
    -c /opt/zimbra/conf/amavisd.conf \
    foreground

    Didapatkan error:

    zimbra@mail:~$ /opt/zimbra/common/sbin/amavisd \
    -X no_conf_file_writable_check \
    -c /opt/zimbra/conf/amavisd.conf \
    foreground
    
    Suicide () TROUBLE in pre_loop_hook: config: no rules were found!  Do you need to run 'sa-update'?
    Compilation failed in require at /opt/zimbra/common/sbin/amavisd line 101.
    BEGIN failed--compilation aborted at /opt/zimbra/common/sbin/amavisd line 101.

    3. Periksa SpamAssassin

    Lakukan pengecekan:

    /opt/zimbra/common/bin/spamassassin --lint -D

    Hasil akhirnya menunjukkan:

    zimbra@mail:~$ /opt/zimbra/common/bin/spamassassin --lint -D
    .
    .
    .
    config: no rules were found!  Do you need to run 'sa-update'?

    Padahal direktori rules masih lengkap.


    4. Jalankan sa-update

    /opt/zimbra/common/bin/sa-update -D

    Didapatkan error:

    zimbra@mail:~$ /opt/zimbra/common/bin/sa-update -D
    .
    .
    Aug  3 12:05:57.745 [47987] dbg: gpg: [GNUPG:] NO_PUBKEY 6C55397824F434CE
    Aug  3 12:05:57.745 [47987] dbg: gpg: gpg: Can't check signature: No public key
    .
    .
    NO_PUBKEY
    error: GPG validation failed!

    Dari sini diketahui bahwa GPG key SpamAssassin hilang, sehingga proses update rules gagal diverifikasi.


    Solusi

    1. Buat direktori key

    mkdir -p /opt/zimbra/data/spamassassin/localrules/sa-update-keys
    chown -R zimbra:zimbra /opt/zimbra/data/spamassassin/localrules

    2. Download GPG Key resmi

    cd /tmp
    wget https://spamassassin.apache.org/updates/GPG.KEY

    3. Import GPG Key

    Jalankan sebagai user zimbra.

    su - zimbra
    /opt/zimbra/common/bin/sa-update --import /tmp/GPG.KEY

    4. Update SpamAssassin Rules

    /opt/zimbra/common/bin/sa-update

    Pastikan proses selesai tanpa error GPG.

    5. Restart Service

    zmamavisdctl restart

    atau

    zmcontrol restart

    Verifikasi

    Pastikan service kembali berjalan:

    zmcontrol status

    Hasil yang diharapkan:

    zimbra@mail:~$ zmcontrol status
    Host mail.zimbra.lab
            amavis                  Running
            antispam                Running
            antivirus               Running
            convertd                Running
            ldap                    Running
            license-daemon          Running
            logger                  Running
            mailbox                 Running
            memcached               Running
            mta                     Running
            onlyoffice              Running
            opendkim                Running
            proxy                   Running
            service webapp          Running
            snmp                    Running
            spell                   Running
            stats                   Running
            zimbra webapp           Running
            zimbraAdmin webapp      Running
            zimlet webapp           Running
            zmconfigd               Running

    Lalu pastikan dapat mengirim email secara normal kembali.


    Kesimpulan

    Kasus ini terjadi setelah melakukan upgrade dari Zimbra 10.1.16 ke 10.1.20 pada server yang sudah lama tidak diperbarui. Penyebab utamanya bukan pada konfigurasi Amavis, melainkan GPG key SpamAssassin yang hilang, sehingga proses sa-update gagal memverifikasi update rules. Akibatnya, SpamAssassin tidak dapat memuat rules dan Amavis gagal dijalankan.

    Dengan mengembalikan GPG key, menjalankan kembali sa-update, dan me-restart service Zimbra, service amavis, antivirus, dan mta dapat kembali berjalan normal.

    Referensi

  • Mengganti Logo & White Label Zimbra Modern UI

    Mengganti Logo & White Label Zimbra Modern UI

    Salah satu kebutuhan yang sering muncul ketika implementasi mail server Zimbra Collaboration adalah menyesuaikan tampilan webmail dengan identitas perusahaan. Mengganti logo perusahaan pada halaman webmail dapat meningkatkan branding sekaligus memberikan pengalaman yang lebih profesional bagi pengguna.

    Sejak hadirnya Modern UI, mekanisme penggantian logo di Zimbra berubah dibandingkan dengan Classic Web Client. Oleh karena itu, para admin perlu menggunakan metode yang sesuai dengan antarmuka yang digunakan.

    Pada artikel ini kita akan membahas cara mengganti logo pada Zimbra Modern UI berdasarkan panduan resmi Zimbra.


    Rebranding vs White Label

    Sebelum memulai, penting untuk memahami dua istilah yang sering digunakan.

    Rebranding adalah proses menambahkan identitas perusahaan, seperti logo, tanpa menghilangkan identitas Zimbra yang diwajibkan oleh lisensi tertentu.

    Sedangkan White Label berarti mengganti identitas Zimbra sepenuhnya dengan identitas perusahaan, termasuk logo maupun elemen antarmuka lainnya.

    Bagi pengguna Zimbra Open Source Edition, proses rebranding tetap harus mengikuti ketentuan lisensi CPAL. Sementara itu, kemampuan white label melalui konfigurasi bawaan tersedia pada Zimbra Network Edition. Informasi ini dijelaskan pada panduan resmi Zimbra mengenai rebranding Classic Web Client.

    Catatan

    Apabila masih menggunakan Classic Web Client (Zimbra 8.x), Zimbra telah menyediakan panduan resmi tersendiri mengenai penggantian Login Banner dan Application Banner menggunakan atribut zmprov. Karena artikel ini difokuskan pada Modern UI, panduan tersebut tidak dibahas kembali di sini.


    Persiapan

    Sebelum mengganti logo, siapkan terlebih dahulu file logo dengan format:

    • SVG (logo.svg)

    Modern UI menggunakan file logo.svg sebagai logo aplikasi.


    Menentukan Jenis Virtual Host

    Langkah pertama adalah mengetahui apakah deployment menggunakan default virtual hostname atau custom virtual hostname.

    Caranya:

    1. Login ke Modern UI menggunakan browser Firefox.
    2. Klik kanan pada logo Zimbra.
    3. Pilih Open Image in New Tab.
    4. Perhatikan URL gambar yang muncul.

    Hasilnya akan menunjukkan salah satu dari dua kondisi berikut:

    • Menggunakan default virtual hostname.
    • Menggunakan custom virtual hostname.

    Metode penggantian logo akan mengikuti kondisi tersebut.


    Prosedur A — Default Virtual Host

    Apabila logo berasal dari default virtual hostname, lakukan langkah berikut.

    1. Masuk ke direktori aset Modern UI

    cd /opt/zimbra/jetty/webapps/zimbra/modern/clients/default/assets

    2. Backup logo bawaan

    Sebelum mengganti logo, simpan salinan file asli.

    cp logo.svg logo.svg.old

    3. Upload logo

    Upload file logo perusahaan dengan nama:

    logo.svg

    ke direktori:

    /opt/zimbra/jetty/webapps/zimbra/modern/clients/default/assets

    Apabila file diunggah menggunakan user root, ubah ownership menjadi user zimbra.

    chown zimbra:zimbra \
    /opt/zimbra/jetty/webapps/zimbra/modern/clients/default/assets/logo.svg


    4. Perbarui config.json

    Edit file berikut.

    /opt/zimbra/jetty/webapps/zimbra/modern/clients/default/config.json

    Kemudian ubah nilai version menjadi nilai baru yang belum pernah digunakan sebelumnya.

    Tujuan perubahan versi ini adalah agar browser mengambil aset terbaru setelah logo diganti.


    5. Restart layanan Mailbox

    Masuk sebagai user zimbra.

    su - zimbra

    Kemudian restart layanan.

    zmmailboxdctl restart

    Prosedur B — Custom Virtual Host

    Apabila hasil pengecekan menunjukkan penggunaan custom virtual hostname, ikuti langkah berikut.

    1. Login sebagai user zimbra

    su - zimbra

    Masuk ke direktori Modern UI.

    cd /opt/zimbra/jetty/webapps/zimbra/modern/clients/

    2. Salin direktori default

    Salin direktori default menjadi nama virtual hostname yang digunakan.

    cp -r default <virtual-hostname>

    Sebagai contoh, apabila virtual hostname adalah mail.example.com, maka direktori baru akan dibuat menggunakan nama tersebut.


    3. Masuk ke direktori assets

    cd /opt/zimbra/jetty/webapps/zimbra/modern/clients/<virtual-hostname>/assets

    4. Backup logo bawaan

    cp logo.svg logo.svg.old

    5. Upload logo baru

    Upload logo perusahaan menggunakan nama:

    logo.svg

    ke direktori assets tersebut.


    6. Edit config.json

    Edit file:

    /opt/zimbra/jetty/webapps/zimbra/modern/clients/<virtual-hostname>/config.json

    Kemudian ubah nilai version menggunakan nilai baru yang belum pernah digunakan sebelumnya.


    7. Restart layanan

    Setelah konfigurasi, restart layanan Mailbox sebagai zimbra.

    zmmailboxdctl restart

    Verifikasi

    Setelah layanan berhasil dijalankan kembali:

    1. Buka kembali halaman Modern UI.
    2. Refresh browser.
    3. Apabila logo lama masih muncul, bersihkan cache browser lalu muat ulang halaman.

    Perubahan versi pada config.json membantu browser memuat aset terbaru, namun cache browser tetap dapat memengaruhi hasil yang ditampilkan.


    Hal yang Perlu Diperhatikan

    Beberapa hal penting sebelum melakukan kustomisasi logo:

    • Selalu lakukan backup terhadap file logo.svg bawaan.
    • Gunakan nilai version baru setiap kali mengganti logo.
    • Pastikan ownership file tetap dimiliki oleh user zimbra apabila proses upload dilakukan menggunakan user root.
    • Restart zmmailboxdctl setelah seluruh perubahan selesai dilakukan.

    Penutup

    Pada Modern UI, proses penggantian logo tidak lagi menggunakan atribut zmprov seperti pada Classic Web Client. Sebagai gantinya, administrator perlu mengganti file logo.svg, memperbarui nilai version pada config.json, kemudian me-restart layanan zmmailboxdctl.

    Bagi administrator yang masih menggunakan Classic Web Client, Zimbra tetap menyediakan panduan resmi mengenai rebranding Login Banner dan Application Banner. Namun, untuk implementasi Zimbra Modern UI, metode yang dijelaskan dalam artikel ini merupakan pendekatan yang direkomendasikan oleh Zimbra.

    Referensi

    1. Zimbra. (2023). Did you know? How to change the Zimbra logo in Modern UI. https://blog.zimbra.com/2023/08/did-you-know-how-to-change-the-zimbra-logo-in-modern-ui/
    2. Zimbra. (2021). How to change modern user interface logo. https://wiki.zimbra.com/wiki/How_to_change_modern_user_interface_logo
    3. Zimbra. (2015). How to add your Logo in the Login and App window in Open Source or Network Edition. https://blog.zimbra.com/2015/09/change-login-app-logo-open-source-network-edition/
  • Install dan Konfigurasi Postfix di Rocky 9

    Install dan Konfigurasi Postfix di Rocky 9

    Pada panduan ini saya akan membahas instalasi Postfix di Rocky Linux 9 dari kondisi fresh install. Targetnya dua, pertama Postfix bisa kirim email antar user lokal, dan lalu ditingkatkan supaya bisa mengirim ke alamat Gmail menggunakan relay smtp.gmail.com. Namun untuk hari ini hanya sampai di antar user lokal saja. Semua perintah dijalankan sebagai root.

    Informasi Lab

    ItemNilai
    OSRocky Linux 9
    Hostnamemail.rafi.lab
    Domainrafi.lab
    IP Address192.168.14.4/24
    KebutuhanAkses root, internet

    Sesuaikan hostname dan domain dengan lingkungan kalian.

    1. Persiapan Server

    Set hostname dan tambahkan mapping di /etc/hosts:

    hostnamectl set-hostname mail.rafi.lab
    echo "192.168.14.4 mail.rafi.lab mail" >> /etc/hosts

    Update sistem:

    dnf update -y

    (Opsional) Buka port SMTP di firewalld supaya klien lain di jaringan lokal bisa mengirim lewat server ini:

    firewall-cmd --add-service=smtp --permanent
    firewall-cmd --reload

    SELinux biarkan enforcing, Postfix dengan konfigurasi standar tidak bermasalah.

    2. Instalasi Postfix

    Install Postfix beserta s-nail (pengganti mailx di Rocky 9, menyediakan perintah mail untuk pengujian) dan telnet:

    dnf install postfix s-nail telnet -y
    systemctl enable --now postfix

    Verifikasi:

    systemctl status postfix
    postconf mail_version

    Status service harus active(running).

    3. Konfigurasi Dasar Postfix

    Ubah parameter utama di /etc/postfix/main.cf. Cara paling aman menggunakan postconf:

    postconf -e 'myhostname = mail.rafi.lab'
    postconf -e 'mydomain = rafi.lab'
    postconf -e 'myorigin = $mydomain'
    postconf -e 'inet_interfaces = all'
    postconf -e 'inet_protocols = ipv4'
    postconf -e 'mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain'
    postconf -e 'mynetworks = 127.0.0.0/8, 192.168.14.0/24'
    postconf -e 'home_mailbox = Maildir/'

    Penjelasan singkat:

    • inet_interfaces = all membuat Postfix listen di semua interface, bukan hanya localhost
    • mydestination menentukan domain yang diterima sebagai tujuan lokal
    • mynetworks menentukan subnet yang boleh relay lewat server ini
    • home_mailbox = Maildir/ menyimpan email di direktori ~/Maildir tiap user

    Cek sintaks lalu restart:

    postfix check
    systemctl restart postfix

    postfix check tidak menampilkan output apa pun jika konfigurasi benar.

    4. Uji Kirim Sesama User Lokal

    Buat dua user untuk pengujian:

    useradd budi
    useradd andi

    Kirim email dari budi ke andi:

    su - budi -c 'echo "Halo Andi, ini tes email lokal" | mail -s "Tes Lokal" andi@rafi.lab'

    Cek email masuk di Maildir milik andi:

    ls /home/andi/Maildir/new/
    cat /home/andi/Maildir/new/*

    Cek log pengiriman:

    tail /var/log/maillog

    Opsional, kalian juga bisa tes lewat sesi SMTP manual:

    telnet 192.168.14.4 25

    Lalu ketik perintah SMTP berikut satu per satu (enter):

    ehlo rafi.lab
    mail from: budi@rafi.lab
    rcpt to: andi@rafi.lab
    data
    Subject: Tes via telnet
    
    Halo, ini tes lewat telnet
    .
    quit

    Sampai tahap ini Postfix sudah berfungsi untuk pengiriman antar user lokal.

  • Bagian 1: Mengenal SMTP Relay

    Bagian 1: Mengenal SMTP Relay

    Pada minggu-minggu terakhir, saya mulai cukup banyak bersinggungan dengan layanan SMTP Relay, seperti pengaturan DNS seperti SPF, DKIM, dan DMARC. Dari situ saya menyadari bahwa banyak istilah dan konsep yang selama ini sering digunakan ternyata belum benar-benar saya pahami secara menyeluruh.

    Karena itu, saya memutuskan untuk membuat sebuah seri tulisan yang membahas dasar-dasar SMTP dan SMTP Relay. Tujuannya bukan hanya sebagai dokumentasi pembelajaran pribadi, tetapi juga sebagai referensi bagi siapa saja yang ingin memahami bagaimana proses pengiriman email bekerja, peran server relay, serta teknologi pendukung seperti SPF, DKIM, DMARC, MX Record, hingga alur komunikasi antar mail server. Saya berharap melalui seri ini, pembahasan dapat disampaikan secara bertahap, dimulai dari konsep yang paling mendasar hingga implementasi yang lebih kompleks.

    Apa itu SMTP, sebenarnya?

    SMTP adalah singkatan dari Simple Mail Transfer Protocol. Perhatikan kata pertamanya: Simple. Protokol ini dirancang pada tahun 1982 (RFC 821, lalu diperbarui oleh RFC 5321) dengan filosofi yang sederhana — bagaimana caranya memindahkan sebuah pesan teks dari satu komputer ke komputer lain secara andal.

    Analogi yang paling sering saya pakai: SMTP itu seperti kantor pos dan tukang pos, bukan seperti kotak surat di rumah kalian. Ini penting, jadi saya tegaskan:

    • SMTP bertugas mengirim dan meneruskan email antar server. Ini pekerjaan “tukang pos”.
    • IMAP dan POP3 bertugas agar kalian bisa mengambil dan membaca email dari kotak surat kalian. Ini pekerjaan “membuka kotak surat di rumah”.

    Salah satu kesalahpahaman paling umum yang saya temui: orang mengira SMTP itu untuk membaca email. Bukan. SMTP hanya peduli pada satu hal — memindahkan surat ke tujuan berikutnya.

    Mengenal: MUA, MTA, MDA

    Sebelum masuk ke kata “relay”, kalian wajib kenal tiga singkatan ini. Saya akan pakai istilah-istilah ini terus sepanjang seri, jadi hafalkan baik-baik.

    IstilahKepanjanganPeranContoh nyata
    MUAMail User AgentAplikasi yang kalian pakai untuk menulis & membaca emailOutlook, Thunderbird, Gmail di browser
    MTAMail Transfer AgentServer yang mengirim & meneruskan email antar serverPostfix, Exim, Sendmail
    MDAMail Delivery AgentKomponen yang menaruh email ke kotak surat penerimaDovecot, procmail

    Alur singkatnya begini: kalian menulis email di MUA, MUA menyerahkannya ke MTA, MTA mengoper email itu melewati internet ke MTA lain, lalu di ujung sana MDA menaruhnya ke inbox penerima. Server relay yang akan saya urus (dan yang jadi bintang seri ini) hidup di lapisan MTA.

    Lalu, apa itu “Relay”?

    Nah, sekarang kata kuncinya. Relay dalam konteks email berarti meneruskan email dari satu titik ke titik lain, di mana server yang meneruskan bukanlah pengirim asli maupun penerima akhir.

    Bayangkan estafet lari. Pelari pertama (pengirim) tidak berlari sampai garis finish. Ia memberikan tongkat ke pelari kedua, yang memberikannya lagi ke pelari berikutnya, sampai akhirnya tongkat mencapai finish (penerima). SMTP relay adalah pelari di tengah — ia menerima tongkat (email) lalu meneruskannya ke tujuan berikutnya.

    Kenapa perlu perantara? Kenapa email tidak langsung terbang dari komputer kalian ke server tujuan? Beberapa alasan:

    1. Sentralisasi & kontrol. Perusahaan ingin semua email keluar lewat satu pintu agar bisa dipantau, dicatat, dan diamankan.
    2. Reputasi IP. Server tujuan (misalnya Gmail) menilai email dari reputasi alamat IP pengirim. Mengirim lewat relay dengan IP bereputasi baik jauh lebih mungkin masuk inbox ketimbang dari IP rumahan.
    3. Aplikasi yang tidak mau repot. Aplikasi web, printer, perangkat IoT — mereka tidak mau mengurus antrian, retry, dan enkripsi. Mereka cukup “menitipkan” email ke relay, lalu relay yang mengurus sisanya.
    4. Batasan ISP. Banyak penyedia internet memblokir port 25 dari koneksi rumahan untuk mencegah spam, sehingga mengirim langsung sering kali mustahil.

    Dua wajah SMTP relay

    Ini bagian yang sering bikin bingung pemula, jadi saya pisahkan dengan jelas. Ada dua konteks besar ketika orang menyebut “relay”:

    • Relay sebagai layanan titip-kirim (smarthost). Server aplikasi kalian tidak mengirim langsung ke internet, melainkan menyerahkan semua email ke satu relay tepercaya (disebut smarthost). Relay inilah yang berhubungan dengan dunia luar. Inilah pola yang paling umum di lingkungan korporat.
    • Open relay — dan kenapa ini mimpi buruk. Di masa lalu, banyak server mau meneruskan email dari siapa saja ke siapa saja. Ini disebut open relay. Para spammer menyalahgunakannya besar-besaran untuk menyemburkan jutaan email sampah. Hari ini, open relay adalah dosa besar dalam administrasi email. Server kalian akan langsung masuk daftar hitam (blacklist) global dalam hitungan jam. Salah satu tugas utama saya nanti — dan tema besar di bagian ke-5 seri ini — adalah memastikan relay kita tertutup rapat dan hanya mau melayani pihak yang berwenang.

    Saya tekankan sekali lagi karena ini krusial: relay yang baik itu selektif. Ia tahu persis siapa yang boleh menitip email lewat dirinya, dan menolak semua yang lain.

    Kapan kalian butuh SMTP relay?

    Supaya konkret, ini beberapa skenario nyata di mana relay jadi jawaban:

    • Aplikasi e-commerce kalian perlu mengirim ribuan email “pesanan diterima” per hari, dan kalian ingin semuanya terkirim rapi dengan reputasi terjaga.
    • Kantor punya banyak aplikasi internal (HR, monitoring, printer) yang perlu kirim notifikasi, dan kalian ingin satu titik keluar yang terkontrol.
    • Kalian punya banyak server yang tersebar, tapi ingin semua email keluar melalui satu IP yang sudah dikonfigurasi SPF, DKIM, dan DMARC-nya dengan benar (tenang, semua istilah ini kita bedah tuntas di bagian ke-4).

    Peta perjalanan seri ini

    Karena ini seri berkelanjutan, saya ingin kalian tahu ke mana kita akan pergi. Anggap ini peta perjalanan kita:

    1. Bagian 1 (yang sedang kalian baca): Fondasi — apa itu SMTP dan relay.
    2. Bagian 2: Anatomi perjalanan sebuah email, percakapan SMTP baris demi baris, port, dan istilah DNS seperti MX record.
    3. Bagian 3: Oprek-oprek, membangun relay pertama dengan Postfix dari nol.
    4. Bagian 4: Keamanan & deliverability — TLS, autentikasi SASL, SPF, DKIM, DMARC.
    5. Bagian 5: Menjaga relay tetap sehat — anti-spam, rate limiting, mencegah open relay, dan membaca log saat ada masalah.
    6. Bagian 6: Level produksi — high availability, manajemen antrian, dan monitoring.

    Penutup

    Sampai sini, saya harap gambaran besarnya sudah terbentuk di kepala kalian: SMTP adalah bahasa yang dipakai server email untuk berbicara, dan relay adalah peran perantara yang meneruskan email dengan penuh tanggung jawab.

    Di bagian berikutnya, kita akan menyelami sesuatu yang menurut saya paling seru — kita akan “menguping” percakapan asli antara dua server SMTP, baris demi baris, sampai kalian bisa membaca dan bahkan mengetiknya sendiri dengan tangan. Sampai jumpa di Bagian 2.