Postfix Courier Imap/Pop3 ve SMTP AUTH

Courier imap/pop3 + postfix + mysql üçlüsünü pop-before-smtp ile gayet verimli kullanırken, SMTP auth’u oto göndericilerin oluşturabileceği spamlere karşı başlatmayı düşündüğünüzde;

Muhteşem üçlüye eklenecek bir Cyrus SASL’ın iyi bir çözüm olduğunu görürüz.

Cyrus SASL’ı sql ile kullanmak için sql modülü cayrus-sql kurulmuş olmalıdır. Sql modülünde düz metin şifre (plain text) şartını göreceksiniz. Ayrıca sasl’ın e-mail adresini değilde @ öncesini mysql’e sorgu olarak gönderdiğini görüncede google’ın engin dünyasında gezintiye çıkacaksınız.

Cyrus SASL’ın sql modülü ile kullanımı için smtpd.conf dosyası: CentOS dosya yolu: /usr/lib64/sasl/smtpd.conf

Cyrus’un Sql modülü için şifrenin mysql’de kriptosuz tutulduğu yapıda SASL yönergeleri:

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
sql_hostnames: localhost
sql_user: dbuser
sql_passwd: dbpass
sql_database: mail_table
sql_select: SELECT plain_text_pass FROM mail_table WHERE email_field = ‘%u@%r’  (FLAGS’da -r parametresi olmazsa ‘%u’+’@’+’%r’ şeklinde olmalı)

Cyrus SASL’ın saslauthd dosyasında FLAGS kısmında -r parametresi ile @ sonrasını oluşturan makina adını (domain,realm,user@domain) alıp sorguya ekleme sağlanabiliyor. Sorgu başarılı bi şekilde çalıştırılarak istenen veri alınabiliyor.

CentOS’da dosyanın yolu: /etc/sysconfig/saslauthd

SOCKETDIR=/var/run/saslauthd

MECH=pam

FLAGS=”-r”

Şifreyi kriptolu kullanmak istiyorum diyenler için ise PAM modulü şartı yer alıyor. Tabiki PAM’ı kullanmak içinde PAM için yazılan bir Mysql modülü gerekli. PAM Mysql modülü için http://pam-mysql.sourceforge.net/ adresinden son stabil versiyon indirilmeli ve kurulmalı. pam_mysql.so dosyasının /lib64/security/pam_mysql.so veya benzeri bir dosya yolunda olmasına özen gösterilmeli. Mysql modülünün haberleşme işlemleri için c başlık kütüphaneleride mysql-devel paketinde yer alıyor bunuda kurmak gerekli tabi. smtpd.conf içinde ise sql yönergelerinin yerini aşağıda yer verdiğim saslauth kipi alıyor.

SASL ile PAM için smtpd.conf. CentOS dosya yolu: /usr/lib64/sasl/smtpd.conf

pwcheck_method: saslauthd
saslauthd_version: 2

PAM için smtp konfigürasyon dosyası şu şekilde olmalı: CentOs Dosya Yolu: /etc/pam.d/smtp

#%PAM-1.0
auth optional pam_mysql.so user=dbuser passwd=dbpass db=dbname table=mail_table usercolumn=email_field passwdcolumn=crypted_pass crypt=1
account required pam_mysql.so user=dbuser passwd=dbpass db=dbname table=mail_table usercolumn=email_field passwdcolumn=crypted_pass crypt=1

Burada merak edenler için belirtmek gerek: Pam’ın kripto çeşitleri:

0 = Kripto yok.
1 = crypt kullan (kriptolu – MYSQL ENCRYPT)
2 = Password kullan (kriptolu – MYSQL PASSWORD)

Burada 1 nolu kriptoyu tavsiye edilir. Değişken isimlerini (crypted_field,email_field,dbuser) anlaşılır olması için anlamına uygun yazdım. Umarım anlaşılır olmuştur.

Cyrus SALS için Postfix tarafında ise main.cf dosyanıza

broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_local_domain = $myhostname
şeklindeki postfix yönergelerini eklemeniz gerekiyor.

servisleri restart etmeyi ve pop-before-smtp’yi kapatmayı unutmayınız 🙂

kolay gelsin