bg-tutorials

Cara Menginstal Sertifikat SSL di Qmail

Tutorial ini menunjukkan kepada Anda cara menginstal sertifikat SSL/TLS di Qmail, mail transfer agent yang awalnya ditulis oleh D. J. Bernstein. Prosesnya sama seperti yang digunakan Qmail selama bertahun-tahun: bangun satu berkas PEM yang berisi private key, sertifikat server Anda, dan rantai intermediate, letakkan di /var/qmail/control/servercert.pem, lalu mulai ulang Qmail.

Sebelum Anda mulai: Qmail adalah MTA lawas

Qmail sendiri tidak diperbarui sejak rilis qmail-1.03 yang asli pada tahun 1998. D. J. Bernstein menempatkan kodenya di domain publik pada tahun 2007 tetapi tidak melanjutkan pengembangannya. Fork komunitas yang terkenal, netqmail, mencapai rilis final 1.06 pada tahun 2007 dan sudah tidak dipelihara selama lebih dari satu dekade. Penerus modern yang masih aktif adalah notqmail (rilis saat ini 1.09, Mei 2024), yang meneruskan perbaikan bug dan kompatibilitas dengan sistem modern sambil tetap kompatibel secara drop-in dengan versi aslinya.

Sama pentingnya untuk panduan ini: qmail bawaan tidak memiliki dukungan SSL/TLS native. TLS ditambahkan melalui salah satu dari dua jalur pihak ketiga:

  • Patch qmail-tls oleh Frederik Vermeulen, yang menambahkan STARTTLS ke qmail-smtpd dan membaca sertifikat dari jalur yang sudah ditetapkan secara tetap: /var/qmail/control/servercert.pem. Kebanyakan paket qmail modern (termasuk build netqmail dan notqmail, distribusi s/qmail, dan banyak paket vendor) menyertakan patch ini atau yang setara.
  • stunnel di depan qmail-smtpd untuk membungkus koneksi dengan TLS pada port 465 (SMTPS). Ini bekerja dengan build qmail apa pun karena terminasi TLS terjadi di luar Qmail.

Jika Anda mengelola deployment qmail yang sudah ada, langkah-langkah di bawah ini tetap berlaku. Jika Anda membangun server mail baru dari awal, pertimbangkan Postfix atau OpenSMTPD sebagai gantinya: keduanya memiliki dukungan TLS native yang dipelihara dengan baik dan tim keamanan yang aktif. Kami memiliki tutorial terpisah tentang cara menginstal sertifikat SSL di Postfix.

Membuat kode CSR untuk Qmail

Jika Anda sudah membuat CSR dan menerima berkas SSL dari CA Anda, lompat ke Menginstal sertifikat SSL di Qmail.

CSR adalah singkatan dari Certificate Signing Request: sebuah blok teks yang dienkode berisi detail domain dan organisasi Anda. Anda mengirimkannya ke Certificate Authority (CA) agar dapat memvalidasi permintaan Anda dan menerbitkan sertifikat. Membuat CSR juga menghasilkan private key yang sesuai, yang tetap berada di server Anda dan diperlukan untuk instalasi. Anda memiliki dua opsi:

Buka berkas CSR di editor teks biasa dan salin seluruh blok, termasuk baris BEGIN CERTIFICATE REQUEST dan END CERTIFICATE REQUEST, ke dalam kolom CSR pada formulir pemesanan Anda. Jaga agar berkas private key tetap aman: Anda akan menggabungkannya ke dalam berkas PEM pada bagian berikutnya.

Menginstal sertifikat SSL di Qmail

Setelah validasi, CA akan mengirimkan email kepada Anda berupa arsip ZIP berisi berkas SSL Anda: sertifikat utama (server) dan satu atau lebih sertifikat intermediate (CA). Ekstrak arsip tersebut di server Anda, lalu ikuti langkah-langkah di bawah ini.

Langkah 1: Gabungkan key, sertifikat, dan chain ke dalam satu berkas PEM

Patch qmail-tls (dan yang setara di netqmail, notqmail, dan s/qmail) membaca semua yang dibutuhkan untuk mengakhiri TLS dari satu berkas PEM. Gabungkan berkas-berkas dalam urutan ini: private key Anda lebih dulu, kemudian sertifikat server Anda, lalu rantai intermediate (CA). Sertifikat root tidak diperlukan (klien sudah mempercayainya). Dari direktori yang berisi berkas hasil ekstrak Anda, jalankan:

cat yourdomain.key yourdomain.crt yourdomain.ca-bundle > servercert.pem

Jika CA Anda mengirimkan sertifikat intermediate sebagai berkas terpisah bukan satu .ca-bundle, cantumkan masing-masing setelah sertifikat server, dengan leaf lebih dulu dan intermediate root-issuing terakhir:

cat yourdomain.key yourdomain.crt intermediate1.crt intermediate2.crt > servercert.pem

Buka berkas hasilnya di editor teks untuk mengonfirmasi strukturnya. Bentuknya harus seperti ini, dengan penanda lima tanda hubung yang sebenarnya di sekitar setiap blok:

-----BEGIN RSA PRIVATE KEY-----
(the text of your private key)
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
(the text of your primary SSL certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(the text of the intermediate CA certificate)
-----END CERTIFICATE-----

Key yang lebih baru mungkin diberi label BEGIN PRIVATE KEY bukan BEGIN RSA PRIVATE KEY; keduanya baik-baik saja. Key tidak boleh dienkripsi dengan passphrase, karena qmail-smtpd memuatnya saat startup tanpa meminta konfirmasi. Jika CA Anda menerbitkan sertifikat ECDSA, blok key-nya akan berupa BEGIN EC PRIVATE KEY; tidak ada yang lain yang berubah.

Langkah 2: Pindahkan berkas ke direktori control Qmail

Nama berkas dan jalurnya sudah ditetapkan oleh patch qmail-tls. Pindahkan berkas PEM gabungan ke direktori control Qmail dan perketat izinnya, karena berkas ini berisi private key Anda:

sudo mv servercert.pem /var/qmail/control/servercert.pem
sudo chmod 600 /var/qmail/control/servercert.pem
sudo chown root:qmail /var/qmail/control/servercert.pem

Pemilik dan grup bergantung pada pengguna mana yang menjalankan qmail-smtpd di sistem Anda. Pada instalasi netqmail atau notqmail bawaan, biasanya itu adalah qmaild atau grup qmail, sehingga root:qmail dengan mode 600 berfungsi. Pada setup berbasis vpopmail, qmail-smtpd dijalankan sebagai vpopmail, jadi gunakan:

sudo chown vpopmail:vchkpw /var/qmail/control/servercert.pem
sudo chmod 640 /var/qmail/control/servercert.pem

Bagaimanapun caranya, tujuannya sama: proses qmail-smtpd harus bisa membaca berkas tersebut, dan tidak ada yang lain yang bisa.

Langkah 3: Sesuaikan untuk build khusus

Kebanyakan varian qmail mencari di lokasi default, tetapi beberapa menggunakan variabel lingkungan sebagai gantinya. Sesuaikan dengan build Anda:

  • Qmail bawaan dengan patch qmail-tls (netqmail / notqmail / paket vendor): tidak diperlukan konfigurasi lebih lanjut. qmail-smtpd membaca /var/qmail/control/servercert.pem secara otomatis. Agar qmail-smtpd mengiklankan STARTTLS dalam respons EHLO, variabel lingkungan UCSPITLS harus ditetapkan dalam skrip run qmail-smtpd (biasanya /var/qmail/supervise/qmail-smtpd/run): export UCSPITLS=”” sebelum baris qmail-smtpd. Untuk mewajibkan enkripsi sebelum autentikasi, tetapkan juga FORCE_TLS=1.
  • s/qmail dengan ucspi-ssl: jalur sertifikat tidak ditetapkan secara tetap. Tetapkan variabel lingkungan ini dalam skrip run qmail-smtpd Anda (atau dalam wrapper tcpserver / sslserver yang sesuai): CERTFILE untuk sertifikat server, KEYFILE untuk private key (keduanya bisa mengarah ke berkas PEM gabungan yang sama), dan CERTCHAINFILE untuk sertifikat intermediate. Lihat dokumentasi s/qmail untuk nama direktif yang tepat pada versi Anda.
  • Front-end stunnel (SMTPS pada port 465): arahkan direktif cert stunnel ke /var/qmail/control/servercert.pem dan biarkan exec-nya menjalankan qmail-smtpd. Jalur ini tidak memerlukan patch qmail-tls sama sekali; TLS berakhir di stunnel.

Jika Anda tidak tahu patch mana yang digunakan untuk membangun qmail-smtpd Anda, periksa file binernya:

strings /var/qmail/bin/qmail-smtpd | grep -iE 'tls|starttls|servercert'

Jika Anda melihat referensi ke STARTTLS, servercert.pem, atau UCSPITLS, maka biner tersebut memiliki patch qmail-tls yang sudah dikompilasi di dalamnya.

Langkah 4: Mulai ulang Qmail

Qmail membaca sertifikat saat proses dimulai, sehingga qmail-smtpd perlu dimulai ulang. Pada kebanyakan instalasi yang menggunakan skrip kontrol yang disediakan:

sudo qmailctl restart

Jika distribusi Anda membungkus Qmail dalam layanan systemd, gunakan:

sudo systemctl restart qmail

Pada setup daemontools / runit, kirimkan sinyal TERM ke qmail-smtpd melalui svc:

sudo svc -t /service/qmail-smtpd

Perhatikan log (biasanya /var/log/qmail/smtpd/current) untuk kesalahan selama startup. PEM yang format-nya salah atau kepemilikan yang tidak tepat adalah alasan paling umum mengapa qmail-smtpd menolak mengaktifkan TLS.

Uji instalasi SSL Anda

Konfirmasi bahwa Qmail menawarkan STARTTLS dan menyajikan sertifikat yang benar dengan OpenSSL. Ganti mail.yourdomain.com dengan hostname server mail Anda:

openssl s_client -starttls smtp -connect mail.yourdomain.com:25 -servername mail.yourdomain.com </dev/null 
| openssl x509 -noout -issuer -subject -dates

Outputnya harus menampilkan subject (common name), issuer (CA), dan tanggal masa berlaku sertifikat Anda. Jika Anda menyiapkan SMTPS melalui stunnel pada port 465 sebagai gantinya, hilangkan -starttls smtp dan hubungkan langsung ke port 465:

openssl s_client -connect mail.yourdomain.com:465 -servername mail.yourdomain.com

Cari Verify return code: 0 (ok) di bagian bawah proses handshake. Jika Anda melihat kesalahan chain, sertifikat intermediate tidak ada di servercert.pem: tambahkan sertifikat tersebut dan mulai ulang qmail-smtpd. Untuk laporan lengkap mengenai sertifikat, chain, dan dukungan protokol, jalankan SSL Checker kami terhadap hostname mail Anda.

Pertanyaan yang Sering Diajukan

Dari mana Qmail membaca sertifikat SSL?

Dari berkas /var/qmail/control/servercert.pem. Jalur tersebut ditetapkan secara tetap dalam patch qmail-tls yang menambahkan STARTTLS ke qmail-smtpd, dan jalur yang sama digunakan oleh setiap varian qmail yang umum (netqmail, notqmail, paket vendor). Berkas tersebut harus berisi private key, sertifikat server, dan rantai intermediate, dalam urutan tersebut. s/qmail dengan ucspi-ssl adalah pengecualian: berkas ini membaca variabel lingkungan CERTFILE, KEYFILE, dan CERTCHAINFILE sebagai gantinya.

Dalam urutan apa saya menempatkan berkas-berkas di servercert.pem?

Private key lebih dulu, kemudian sertifikat server (leaf), lalu sertifikat CA intermediate. Sertifikat root tidak diperlukan, karena klien mail sudah mempercayainya. Satu baris perintah sudah cukup:
cat yourdomain.key yourdomain.crt yourdomain.ca-bundle > servercert.pem
Jika urutannya salah, qmail-smtpd akan gagal memuat sertifikat saat startup dan TLS tidak akan ditawarkan. Periksa log di bawah /var/log/qmail/smtpd/ jika Anda mencurigai hal ini.

Apakah qmail bawaan mendukung TLS?

Tidak secara langsung. Rilis qmail-1.03 asli dari tahun 1998 tidak memiliki dukungan SSL atau TLS. TLS ditambahkan baik melalui patch qmail-tls (dikompilasi ke dalam biner qmail-smtpd, menambahkan STARTTLS pada port 25 dan 587) atau dengan menjalankan stunnel di depan qmail-smtpd untuk SMTPS pada port 465. Hampir setiap paket qmail modern sudah menyertakan patch qmail-tls yang sudah diterapkan, sehingga Anda biasanya tidak perlu mem-patch sumbernya sendiri.

Apakah Qmail masih dipelihara?

Qmail asli (qmail-1.03) tidak diperbarui sejak tahun 1998. Fork komunitas pertama, netqmail, merilis versi terakhirnya (1.06) pada tahun 2007. Penerus modern yang masih aktif adalah notqmail, yang merilis versi 1.09 pada Mei 2024 dan terus menyediakan perbaikan bug serta patch kompatibilitas sistem modern. Untuk server mail baru, kebanyakan operator memilih Postfix atau OpenSMTPD sebagai gantinya, yang keduanya memiliki dukungan TLS native dan dipelihara secara aktif.

Mengapa qmail-smtpd berjalan tetapi tidak menawarkan STARTTLS?

Tiga penyebab yang umum. Pertama, variabel lingkungan UCSPITLS tidak diekspor dalam skrip run qmail-smtpd: tetapkan UCSPITLS=”” (nilainya bisa kosong) sebelum baris qmail-smtpd dan mulai ulang layanan tersebut. Kedua, biner qmail-smtpd dibangun tanpa patch qmail-tls: konfirmasi dengan strings /var/qmail/bin/qmail-smtpd | grep -i tls. Ketiga, /var/qmail/control/servercert.pem tidak ada, tidak dapat dibaca oleh pengguna qmail-smtpd, atau formatnya salah; periksa izin dan urutan blok PEM.

Bagaimana cara memverifikasi sertifikat setelah memulai ulang Qmail?

Hubungkan ke port SMTP dengan OpenSSL dan baca sertifikat yang disajikan Qmail melalui STARTTLS:
openssl s_client -starttls smtp -connect mail.yourdomain.com:25 -servername mail.yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
Perintah ini akan menampilkan subject, issuer, dan tanggal masa berlaku. Untuk SMTPS melalui stunnel pada port 465, hilangkan flag -starttls smtp. Pastikan issuer sesuai dengan CA Anda dan handshake berakhir dengan Verify return code: 0 (ok).

Hemat 10% untuk Sertifikat SSL saat memesan hari ini!

Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10

Ditulis oleh

Penulis konten berpengalaman yang berspesialisasi dalam Sertifikat SSL. Mengubah topik keamanan siber yang rumit menjadi konten yang jelas dan menarik. Berkontribusi untuk meningkatkan keamanan digital melalui narasi yang berdampak.