bg-tutorials

Qmail’e SSL Sertifikası Nasıl Yüklenir

Bu eğitim, orijinal olarak D. J. Bernstein tarafından yazılan posta aktarım aracısı Qmail’e SSL/TLS sertifikası nasıl kurulur konusunu göstermektedir. İşlem, Qmail’in yıllardır kullandığı süreçle aynıdır: özel anahtarı, sunucu sertifikanızı ve ara sertifika zincirini içeren tek bir PEM dosyası oluşturun, bunu /var/qmail/control/servercert.pem konumuna yerleştirin ve Qmail’i yeniden başlatın.

Başlamadan önce: Qmail eski (legacy) bir MTA’dır

Qmail’in kendisi, 1998 yılındaki orijinal qmail-1.03 sürümünden bu yana güncellenmemiştir. D. J. Bernstein, kodu 2007 yılında kamu malı (public domain) haline getirmiş ancak geliştirmeye devam etmemiştir. Tanınmış topluluk çatalı (fork) netqmail, son 1.06 sürümüne 2007’de ulaşmış ve on yılı aşkın süredir bakımı yapılmamaktadır. Aktif modern devam projesi olan notqmail (mevcut sürüm 1.09, Mayıs 2024), orijinaliyle doğrudan uyumlu kalırken hata düzeltmelerini ve modern sistem uyumluluğunu sürdürmektedir.

Bu kılavuz için bir o kadar önemlisi: standart qmail’de yerleşik SSL/TLS desteği bulunmamaktadır. TLS, iki üçüncü taraf yönteminden biriyle eklenir:

  • Frederik Vermeulen tarafından geliştirilen qmail-tls yaması, qmail-smtpd’ye STARTTLS ekler ve sertifikayı sabit kodlanmış bir yoldan okur: /var/qmail/control/servercert.pem. Modern qmail paketlerinin çoğu (netqmail ve notqmail derlemeleri, s/qmail dağıtımı ve birçok satıcı paketi dahil) bu yamayı veya benzerini içerir.
  • 465 (SMTPS) portunda bağlantıyı TLS içine sarmak için qmail-smtpd’nin önüne stunnel yerleştirmek. TLS sonlandırma Qmail’in dışında gerçekleştiği için bu yöntem her qmail derlemesiyle çalışır.

Mevcut bir qmail dağıtımını sürdürüyorsanız, aşağıdaki adımlar geçerlidir. Sıfırdan yeni bir posta sunucusu kuruyorsanız, bunun yerine Postfix veya OpenSMTPD kullanmayı düşünün: her ikisinin de yerleşik, iyi bakımlı TLS desteği ve aktif güvenlik ekipleri vardır. Postfix’e SSL sertifikası nasıl kurulur konusunda ayrı bir eğitimimiz bulunmaktadır.

Qmail için CSR kodu oluşturma

CSR’nizi zaten oluşturduysanız ve SSL dosyalarını CA’nızdan aldıysanız, Qmail’e SSL sertifikasının kurulumu bölümüne geçebilirsiniz.

CSR, Sertifika İmzalama Talebi (Certificate Signing Request) anlamına gelir: alan adınız ve kuruluş bilgilerinizi içeren kodlanmış bir metin bloğudur. Talebinizi doğrulayıp sertifikayı verebilmesi için bunu Sertifika Yetkilisine (CA) gönderirsiniz. CSR oluşturma işlemi, sunucunuzda kalan ve kurulum için gerekli olan eşleşen özel anahtarı (private key) da oluşturur. İki seçeneğiniz vardır:

CSR dosyasını herhangi bir düz metin düzenleyicide açın ve BEGIN CERTIFICATE REQUEST ile END CERTIFICATE REQUEST satırları dahil tüm bloğu sipariş formunuzdaki CSR alanına kopyalayın. Özel anahtar dosyasını güvenli bir yerde saklayın: bir sonraki bölümde bunu PEM dosyasıyla birleştireceksiniz.

Qmail’e SSL sertifikasının kurulumu

Doğrulama sonrasında CA, size SSL dosyalarınızı içeren bir ZIP arşivi gönderir: birincil (sunucu) sertifika ve bir veya daha fazla ara (CA) sertifika. Arşivi sunucunuzda çıkarın, ardından aşağıdaki adımları izleyin.

Adım 1: Anahtarı, sertifikayı ve zinciri tek bir PEM dosyasında birleştirin

qmail-tls yaması (ve netqmail, notqmail ile s/qmail’deki eşdeğerleri), TLS sonlandırma için gereken her şeyi tek bir PEM dosyasından okur. Dosyaları şu sırayla birleştirin: önce özel anahtarınız, sonra sunucu sertifikanız, ardından ara (CA) zinciri. Kök sertifika gerekli değildir (istemciler onu zaten güvenilir olarak tanır). Çıkardığınız dosyaların bulunduğu dizinden şunu çalıştırın:

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

CA’nız ara sertifikaları tek bir .ca-bundle dosyası yerine ayrı dosyalar olarak teslim ettiyse, her birini sunucu sertifikasından sonra, önce yaprak (leaf) sonra kök veren ara sertifika olacak şekilde sıralayın:

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

Yapıyı doğrulamak için oluşan dosyayı bir metin düzenleyicide açın. Her bloğun çevresinde gerçek beş kısa çizgili işaretlerle şu şekilde görünmelidir:

-----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-----

Daha yeni anahtarlar BEGIN RSA PRIVATE KEY yerine BEGIN PRIVATE KEY olarak etiketlenebilir; her ikisi de uygundur. Anahtar, bir parola ile şifrelenmemiş olmalıdır, çünkü qmail-smtpd onu başlangıçta herhangi bir istem olmadan yükler. CA’nız bir ECDSA sertifikası verdiyse, anahtar bloğu BEGIN EC PRIVATE KEY olacaktır; başka hiçbir şey değişmez.

Adım 2: Dosyayı Qmail’in kontrol dizinine taşıyın

Dosya adı ve yolu qmail-tls yaması tarafından sabitlenmiştir. Birleştirilmiş PEM dosyasını Qmail’in kontrol dizinine taşıyın ve özel anahtarınızı içerdiği için izinlerini sıkılaştırın:

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

Sahip ve grup, sisteminizde qmail-smtpd’yi hangi kullanıcının çalıştırdığına bağlıdır. Standart bir netqmail veya notqmail kurulumunda bu genellikle qmaild veya qmail grubudur, bu nedenle 600 modunda root:qmail çalışır. vpopmail tabanlı bir kurulumda, qmail-smtpd vpopmail olarak çalışır, dolayısıyla şunu kullanın:

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

Her iki durumda da amaç aynıdır: qmail-smtpd işlemi dosyayı okuyabilmeli, başka hiçbir şey okuyamamalıdır.

Adım 3: Özel derlemeler için ayarlama yapın

Qmail çeşitlerinin çoğu varsayılan konuma bakar, ancak bazıları bunun yerine ortam değişkenleri kullanır. Derlemenizi eşleştirin:

  • qmail-tls yamalı standart qmail (netqmail / notqmail / satıcı paketleri): başka bir yapılandırma gerekmez. qmail-smtpd, /var/qmail/control/servercert.pem dosyasını otomatik olarak okur. qmail-smtpd’nin EHLO yanıtında STARTTLS’yi bildirmesi için, UCSPITLS ortam değişkeninin qmail-smtpd çalıştırma betiğinde (genellikle /var/qmail/supervise/qmail-smtpd/run) ayarlanması gerekir: qmail-smtpd satırından önce UCSPITLS=”” değerini dışa aktarın (export). Kimlik doğrulamadan önce şifrelemenin zorunlu olması için ayrıca FORCE_TLS=1 ayarlayın.
  • ucspi-ssl ile s/qmail: sertifika yolu sabit kodlanmamıştır. qmail-smtpd çalıştırma betiğinizde (veya karşılık gelen tcpserver / sslserver sarmalayıcısında) şu ortam değişkenlerini ayarlayın: sunucu sertifikası için CERTFILE, özel anahtar için KEYFILE (bunlar aynı birleştirilmiş PEM dosyasını işaret edebilir) ve ara sertifikalar için CERTCHAINFILE. Sürümünüzdeki tam yönerge adları için s/qmail belgelerine bakın.
  • stunnel ön ucu (465 portunda SMTPS): stunnel’in cert yönergesini /var/qmail/control/servercert.pem dosyasına yönlendirin ve exec ile qmail-smtpd’yi başlatın. Bu yöntem qmail-tls yamasına hiç gerek duymaz; TLS sonlandırma stunnel’de gerçekleşir.

qmail-smtpd’nizin hangi yamayla derlendiğini bilmiyorsanız, ikili dosyayı kontrol edin:

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

STARTTLS, servercert.pem veya UCSPITLS referanslarını görüyorsanız, ikili dosyaya qmail-tls yaması derlenmiş demektir.

Adım 4: Qmail’i yeniden başlatın

Qmail sertifikayı işlem başlangıcında okur, dolayısıyla qmail-smtpd’nin yeniden başlatılması gerekir. Sağlanan kontrol betiklerini kullanan kurulumların çoğunda:

sudo qmailctl restart

Dağıtımınız Qmail’i bunun yerine bir systemd hizmetine sarıyorsa, şunu kullanın:

sudo systemctl restart qmail

Bir daemontools / runit kurulumunda, qmail-smtpd’ye bunun yerine svc üzerinden bir TERM sinyali gönderin:

sudo svc -t /service/qmail-smtpd

Başlangıç sırasında hatalar için günlüğü (genellikle /var/log/qmail/smtpd/current) izleyin. Hatalı biçimlendirilmiş bir PEM veya yanlış sahiplik, qmail-smtpd’nin TLS’yi etkinleştirmeyi reddetmesinin en yaygın nedenidir.

SSL kurulumunuzu test edin

Qmail’in STARTTLS sunduğunu ve doğru sertifikayı sunduğunu OpenSSL ile doğrulayın. mail.yourdomain.com yerine posta sunucunuzun ana bilgisayar adını yazın:

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

Çıktı, sertifikanızın konusunu (ortak ad), veren kuruluşu (CA) ve geçerlilik tarihlerini yazdırmalıdır. Bunun yerine 465 portunda stunnel üzerinden SMTPS kurdunuzsa, -starttls smtp parametresini kaldırın ve doğrudan 465 portuna bağlanın:

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

El sıkışmanın (handshake) sonunda Verify return code: 0 (ok) ifadesini arayın. Bir zincir hatası görüyorsanız, ara sertifikalar servercert.pem dosyasından eksiktir: bunları ekleyip qmail-smtpd’yi yeniden başlatın. Sertifika, zincir ve protokol desteği hakkında tam bir rapor için posta ana bilgisayar adınıza karşı SSL Checker aracımızı çalıştırın.

Sıkça Sorulan Sorular

Qmail SSL sertifikasını nereden okur?

/var/qmail/control/servercert.pem dosyasından. Bu yol, qmail-smtpd’ye STARTTLS ekleyen qmail-tls yamasında sabit kodlanmıştır ve aynı yol tüm yaygın qmail çeşitleri (netqmail, notqmail, satıcı paketleri) tarafından kullanılır. Dosya özel anahtarı, sunucu sertifikasını ve ara zinciri bu sırayla içermelidir. ucspi-ssl ile s/qmail bir istisnadır: bunun yerine CERTFILE, KEYFILE ve CERTCHAINFILE ortam değişkenlerini okur.

servercert.pem dosyasındaki dosyaları hangi sırada eklemeliyim?

Önce özel anahtar, sonra sunucu (yaprak) sertifikası, ardından ara CA sertifikası(ları). Posta istemcileri kök sertifikaya zaten güvendiği için kök sertifika gerekli değildir. Tek satırlık bir işlem yeterlidir:
cat yourdomain.key yourdomain.crt yourdomain.ca-bundle > servercert.pem
Sıra yanlışsa, qmail-smtpd başlangıçta sertifikayı yükleyemez ve TLS sunulmaz. Bundan şüpheleniyorsanız /var/log/qmail/smtpd/ altındaki günlüğü kontrol edin.

Standart qmail TLS’yi destekler mi?

Kendi başına desteklemez. 1998’deki orijinal qmail-1.03 sürümünde SSL veya TLS desteği yoktur. TLS, ya qmail-smtpd ikili dosyasına derlenen qmail-tls yamasıyla (25 ve 587 portlarında STARTTLS ekler) ya da 465 portunda SMTPS için qmail-smtpd’nin önünde stunnel çalıştırılarak eklenir. Modern qmail paketlerinin neredeyse tümü qmail-tls yamasını zaten uygulanmış olarak sunar, dolayısıyla genellikle kaynağı kendiniz yamalamanız gerekmez.

Qmail hâlâ bakımı yapılıyor mu?

Orijinal Qmail (qmail-1.03) 1998’den bu yana güncellenmemiştir. İlk topluluk çatalı olan netqmail, son sürümünü (1.06) 2007’de yayınlamıştır. Aktif modern devam projesi, Mayıs 2024’te 1.09 sürümünü yayınlayan ve hata düzeltmeleri ile modern sistem uyumluluk yamalarını sunmaya devam eden notqmail‘dir. Yeni posta sunucuları için işletmecilerin çoğu bunun yerine, her ikisi de yerleşik ve aktif olarak bakımı yapılan TLS desteğine sahip Postfix veya OpenSMTPD‘yi seçmektedir.

qmail-smtpd neden başlıyor ama STARTTLS sunmuyor?

Üç yaygın neden vardır. Birincisi, UCSPITLS ortam değişkeni qmail-smtpd çalıştırma betiğinde dışa aktarılmamıştır (export): qmail-smtpd satırından önce UCSPITLS=”” (değer boş olabilir) ayarlayın ve hizmeti yeniden başlatın. İkincisi, qmail-smtpd ikili dosyası qmail-tls yaması olmadan derlenmiştir: strings /var/qmail/bin/qmail-smtpd | grep -i tls ile doğrulayın. Üçüncüsü, /var/qmail/control/servercert.pem eksik, qmail-smtpd kullanıcısı için okunamıyor veya hatalı biçimlendirilmiştir; izinleri ve PEM bloklarının sırasını kontrol edin.

Qmail’i yeniden başlattıktan sonra sertifikayı nasıl doğrularım?

OpenSSL ile SMTP portuna bağlanın ve Qmail’in STARTTLS üzerinden sunduğu sertifikayı okuyun:
openssl s_client -starttls smtp -connect mail.yourdomain.com:25 -servername mail.yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
Bu, konu, veren kuruluş ve geçerlilik tarihlerini yazdırır. 465 portunda stunnel üzerinden SMTPS için -starttls smtp bayrağını kaldırın. Veren kuruluşun CA’nızla eşleştiğini ve el sıkışmanın Verify return code: 0 (ok) ile sonuçlandığını doğrulayın.

Bugün SSL Dragon’dan sipariş vererek SSL Sertifikalarında %10 indirimden yararlanın!

Hızlı düzenleme, güçlü şifreleme, %99,99 tarayıcı güvenilirliği, özel destek ve 25 günlük para iade garantisi. Kupon kodu: SAVE10

A detailed image of a dragon in flight
Tarafından yazıldı

SSL Sertifikaları konusunda uzmanlaşmış deneyimli içerik yazarı. Karmaşık siber güvenlik konularını açık, ilgi çekici içeriğe dönüştürmek. Etkili anlatımlar yoluyla dijital güvenliğin geliştirilmesine katkıda bulunun.