Qmail üzerinde Smtproute Authentication Patch Uygulanması

  Linux

Qmail serverda gönderilen bütün mailleri başka bir smtp sunucu üzerinden iletilmesini istediğimiz zaman yönlendirilecek mail server üzerinde relay access vermek gerekiyor. Bunun içinde qmail sunucusu üzerinde smtproutes dosyamıza yönlendirilecek sunucunun ip adresi girilerek tanımını yapabiliyoruz.

Qmail Relay İzni-Tanımı için,(genelde dizin yeri buradadır)

Aşağıdaki satırları eklememiz yeterlidir. Bu satırlardaki ip adresleri örnektir, kendinize göre değiştirmeniz gerekmektedir.

(Böylece 192.168.1.100 ip adresine relay izni vermiş bulunuyoruz.)

– Eğer belirli bir ip grubu içinde izin vermek istiyorsak aşağıdaki satırı kullanabiliriz. Böylece 192.168.1.100 ile 110 arasındaki ip adreslerine izin vermiş oluyoruz

-veya aşağıdaki şekilde de ekleyebiliriz,

smtproutes dosyasına aşağıdaki şekilde hostname ekleyebiliriz,

Akabinde aşağıdaki komutu girerek dosyamızı ilgili dosyalara set ediyor ve sonrasında qmail servisini restart ediyoruz.

Bu işlemi yaptık sağlıklı bir şekilde çalıştırıyorsak sorun yok. Fakat route ettiğimiz yani karşıdaki sunucu üzerinde iznimiz yok ve mevcut sunucumuz üzerinde statik ip adresimiz yok ise bu durumda bir işe yaramayacaktır. Bu durumla başa çıkmak için diğer sunucuda root kullanıcısını kullanarak relay iznini aşmayı düşünebilirsiniz fakat qmail yapısı gereği defaut’da smtp authentication yapılandırması olmadığı için yine bir işe yaramayacaktır.

qmail-remote scripti/servisi üzerinde smtp authentication sağlamak için qmail-smtproute-auth patchi bulunmakta. Bu patch ile bu sorunu aşabiliyoruz.

Nedir bu qmail-smtproute-auth ?

Basit bir örnekle açıklamak gerekirse, dhcp üzerinden rastgele bir ip aldığınız yani bir dinamik ip adresine sahip olduğunuz sunucumuz var diyelim. Güzel bir şekilde qmail server kurduk ve mail göndermek istiyoruz, fakat maillerimiz karşı sunuculara gitmeyecek ve kabul edilmeyecek.
Bunun nedeni ise mail sunucuları spam ve kötü kullanımları önlemek, güvenlik zafiyetleri ve önlemleri, sistemsel yapılandırmalar gibi bir çok amaca istinaden ip adresi dinamik olan bir sunucudan mail almayacaktır. Yani adsl modeminizin arkasında bir qmail sunucunuz var ve bu sunucunuzun ip’si modemden gelen ip’yi kullanıyor, buda dinamik bir ip adresi ise basit bir şekilde herkese mail atamazsınız.

İş sadece ip adresinin dinamik olmasından da kaynaklanmıyor elbette. Örneğin mail sunucusunun mx,a,txt, rdns v.b. kayıtları mevcut değilse yine mail gönderemezsiniz. Dinamik bir ip adresi için bu kayıtları giremezsiniz, girsenizde ip adresinizden dolayı yine mail gönderemezsiniz.

Fakat çok güzel bir çözümümüz var. Böyle bir durumda “Smart Host” mekanizmasını kullanarak oldukça güzel bir şekilde baş edebiliriz.

Smart Host Nedir?
ISP’lerin(Genelde hosting, datacenter firmaları v.b.) sağladığı bu hizmet ile kendi mail sunucunuzdan mail gönderimi yapıldığı zaman smtp route olarak servis sağlayıcısının(isp) mail sunucusuna gitmesi ve maillerin buradan çıkmasıdır.
Yani dsl hizmetinizin arkasında sunucunuz var, mail gönderiyorsunuz, smart host hizmetini aldığınız smtp mail sunucusuna gidiyor ve buradan mail çıkıyor. Dert yok çile yok !

Buraya kadar herşey yine güzel. Yine bir sorunumuz var. Smart host hizmetini almak istediğimiz smtp server smtp authentication kurmak isteyebilir (genelde isterler). İşte yukarıda bahsettiği bu patch tam burada işe yarıyor.

Burada bu patch’i iki farklı şekilde anlatıcam bunlardan yalnızca birtanesini uygulamanız yeterlidir. İlki aynı durumu yıllar önce araştırmam üzere bir yerde görerek uygulamıştım bu yüzden daha kolay olacaktır. Sizin isteğinize kalmış bir durum.

Qmail Kaynak kod dosyalarının, sistem dosyalarının bulunduğu dizine gidiyoruz. Normalde genel yapılandırma ve tavsiye edilen bir yapı olduğu için ben kendime göre yapıyorum. Siz kendi yapınızın dizini farklıysa onu girmelisiniz.

*İlk Pacth
-Öncelikle ilgili dizinimize gidiyoruz ve script pacth’imizi indiriyoruz,

* Diğer pacth aşağıdaki adresteki gibi uygulayabilirsiniz, (fakat gerek kalmayacaktır)
http://tomclegg.net/qmail/

-Sonrasında netqmail dizinine girerek patch’i uyguluyoruz,

NOT: Tam bu aşamada acı bir tecrübe sonucu öğrendiğim bir durumu açıklayayım; buraya kadar işlem adımlarını yaptım fakat tamda burada eksik yaptığım bir ayar olduğu için diğer işlem adımlarını da tamamladıktan sonra bir türlü çalıştıramadım. Nedeni ise qmail servisini durdurduktan sonra tekrar kurmadığım içinmiş. Epey bir uğraş sonrasında saygı değer google ‘un yönlendirmesiyle öğrendim.

-Bu yüzden qmail servisini durdurduktan sonrada tekrar kuruyoruz. Ben qmail servisini başlatıyoruz diyene kadar da başlatmıyoruz çünkü ayarlamalarımız daha bitmedi. Bu nedenle qmail servisinin hala stop durumda kalması gerekiyor.

-Bu noktada qmail servisinin “control” dizini altında iki adet dosya oluşturarak bu dosyaları kullanıcı ve parola bilgilerini base64 encode olarak gireceğiz.
Şayet kendi qmail yapınızda farklı bir yerdeyse oraya, eğer default bir kurulum yaptıysanız standart kurulum yerine giriyoruz (aşağıdaki gibi),

– Dosyalarımızı oluşturduk şimdi bu aşamada kullanıcı ve parola bilgilerini base64 encode çevirerek kullanıcı adını “smtpauth” dosyasına, parolayı ise “smtppasswd” dosyasına gireceğiz. Bunun için aşağıdaki siteyi kullanabilir veya sunucunuz üzerinde mevcut ise base64 programını kullanabilirsiniz.

http://base64decode.net/
Sunucunuz üzerinde eğer base64 programı mevcut ise aşağıdaki gibi oluşturabilirsiniz,

encode edip teyit etmek için yukarıdaki komutla aldığınız sonucu,

Örnek olarak,

– Bu işlemide yaptıktan sonra smtproutes dosyası içerisine karşı sunucunun yani maillerin gönderilmesini istediğimiz smart host smtp sunucunun ip adresini giriyoruz, qmail servisini başlatıyoruz ve test ederek olduğunu gördükten sonra bir fincan çayımızı gönül rahatlığıyla içiyoruz.

nano /var/qmail/control/smtproutes

### Eklenecek Satır ###

-Yukarıdaki satırı kaydedip çıktıktan sonra qmail’i start ediyoruz,
qmailctl start

Artık bu noktada kimlik doğrulama ile smarthost – karşı smtp sunucu üzerinden maillerimizi gönderiyoruz.