Yazılar

Postfix E-Mail Sunucusu , MailScanner ve Clamav Kurulumu + Mailscanner konfigurasyonu

Bölüm 1:Kurulum
————————————————————————

Bu dökümanda anlatılanlar size ne kazandırır?

Kopyala & Yapıştır yöntemiyle bir e-mail sunucusuna sahip olursunuz.
Çok başarılı bir antispam uygulaması olan mailscanner sayesinde spamlara boğulmassınız.
Debian GNU/Linux işletim sistemini ilk kez kullanıyorsanız,program kurmanının ne kadar rahat olduğunu keşfedersiniz.
Daha önce satın aldığınız bu tip bir yazılım varsa “ah! tüh! vah! diyebilirsiniz.Ne diyebilirim ki?Internette biraz araştırma yapsaydınız!Ticari programlara binlerce dolar para vereceğinize bu projelere biraz destek olsaydınız içiniz daha rahat ederdi eminim…

Kullanılan Yazılımlar ve Sürümleri

Debian GNU/Linux 4 (Etch)
Postfix 2.3.8-2
Courier pop 0.53.3-5
Sasl 2.1.22
Mysql 5.0.32
Mailscanner 4.55.10-3
Spamassassin 3.1.7-2

Postfix Kurulumu

Aşağıdaki komutla kuruluma başlayın;

apt-get install mysql-server-5.0 courier-authlib-mysql libpam-mysql libnss-mysql libsasl2-modules sasl2-bin postfix-mysql courier-pop postfix mailscanner

Yukarıdaki paketlerin konfigurasyonu esnasında mysql,postfix,courier size bir takım sorular soracaktır.Varsayılan cevapları verebilirsiniz.Konfigurasyon dosyalarını değiştireceğimiz için vereceğiniz cevaplar çok önemli değil.

Postfix’te çalışacak sanal mail klasörleri için aşağıdaki komutlarla kullanıcıyı sisteminize ekleyin.

groupadd -g 5000 vmail
useradd -m -d /home/vmail -u 5000 -g 5000 vmail

/etc/default klasörü altındaki saslauthd dosyasını açın.aşağıdaki satırları ekleyin.

####################### /etc/default/saslauthd #############################

START=yes

MECHANISMS="pam"

PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
####################### /etc/default/saslauthd #############################

Yukarıdaki dosyayı editledikten sonra kaydedip çıkın.Az önce postfix için saslauthd dosyasındaki klasörü oluşturun

mkdir -p /var/spool/postfix/var/run/saslauthd

Saslauthd servisini çalıştırın.

/etc/init.d/saslauthd start

Aşağıdaki linkten postfix için konfigurasyon dosyalarını sunucunuza indirin.Bunları /etc/postfix klasörüne kopyalayın.İsterseniz kopyalama yapmadan önce bu klasörü farklı bir isimde kaydedip içindeki dosyaları silebilirsiniz.

/ Link postfix.tar /

Postfixin mysql konfigurasyon dosyalarında göreceğiniz üzere bir mysql veritabanına ihtiyacınız olacak.Aşağıdaki bu veritabanının örnek şemasını indirip,phpmyadminle veya konsoldan mysql sunucunuza import edebilirsiniz.
Bu aşamada,dosyalarda yazılı olan mysql kullanıcı bilgilerini dilediğiniz gibi değiştirebilirsiniz.Yeterki mysql sunucuda oluşturacağınız kullanıcı bilgileriyle aynı olsun.

/ Link mail.sql /

Not: Yukarıda linki verilen sql şeması herhangi bir veri içermiyor.Bu yüzden dosyayı  veritabanınıza import ettikten sonra sisteminize kullanıcı eklemelisiniz.Önce domain tablosuna alanadınızı daha sonra users tablosuna sırasıyla e-mail adresi,şifre (ENCRYPT olmalı) ve kota (BYTE tipinde) bilgilerini eklemelisiniz.

Sıra benim bu kurulumu ilk yaptığımda “niye çalışmıyor!” şeklinde söylenerek,kıvrandığım aşamada.Aşağıdaki linkteki dosyayı /etc/pam.d/ dizinine kopyalayın.Dosyadaki mysql kullanıcı bilgileri,postfix için indirdiğiniz dosyalardakilerle aynı olmalıdır.

/ Link smtp /

Courier Pop Kurulumu

Courier için özel bir konfigurasyone gerek yok.Aşağıdaki dosyaları /etc/courier altına kopyalayın yeterli.Yine belirteyim,authmysqlrc dosyasındaki mysql kullanıcı da aynı veritabanına bağlanabilmesi lazım.

/ Link authmysqlrc/

Mailscanner Kurulumu

Mailscanner size ne avantaj sağlar?

– Yüksek trafikli mail gateway lerde rahatlıkla kullanabilirsiniz.
– Mail trafiğinin çok yüksek olduğu veya spam saldırısının olduğu anlarda bile amavis e göre bellek kullanımı çok daha düşüktür.
– Çok ayrıntılı,kolayca anlaşılır konfigurasyon dosyalarına sahiptir ve esnek bir yapıya sahiptir.
– Acil durumlarda devre dışı bırakılması çok pratiktir.
– Pek çok antivirüs yazılımı ile uyumludur.

-Postfix yapılandırması
Mailscanner ile postfixin beraber çalışabilmesi için main.cf dosyanıza aşağıdaki satırı ekleyin

header_checks = regexp:/etc/postfix/header_checks

Daha sonra yeni /etc/postfix/header_checks dosyanızı açıp aşağıdaki satırı ekleyin.

/^Received:/ HOLD

Mailscanner ile birlikte clam antivirüs ün en güncel versiyonunu kurabilmek için aşağıdaki adresi /etc/apt/sourcelist dosyanıza ekleyin.

deb http://volatile.debian.org/debian-volatile etch/volatile main

Daha sonra mailscanner ile birlikte clamav’ı sisteminize kurun

apt-get install clamav clamav-base clamav-daemon libclamav4 mailscanner

Kurulum tamamlandıktan sonra sırasıyla aşağıdaki dosya izinlerini uygulayın.

chown postfix.postfix /var/spool/MailScanner/ -R
chown postfix.postfix /var/lib/MailScanner/ -R
chown postfix.postfix /var/run/MailScanner/ -R
chown postfix.postfix /var/lock/subsys/MailScanner -R

daha sonra /etc/default/mailscanner dosyasını açıp aşağıdaki satırı aktif hale getirin

#run_mailscanner=1

/etc/MailScanner/MailScanner.conf dosyasını açıp aşağıdaki değişiklikleri yapın.

Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix

Yukarıdaki değişiklikleri yaptıktan sonra mailscanner ve postfix servisleri resetleyin.

/etc/init.d/mailscanner restart
/etc/init.d/postfix restart

Notlar:

Mysql Sunucunuzdaki veritabanınıza ilk kullanıcınızı ekleyip thunderbird veya outlooktan deneme yaptığınızda e-mail istemciniz hata verecektir.Bunun sebebi henüz domain ve kullanıcı klasörleri ( Maildir ) oluşmamasındandır.Klasörlerin otomatik yaratılabilmesi için ,sisteme telnet ile 25.porta bağlanıp veya başka bir e-mail hesabınızdan mail gönderin.Sistem,kendisine gelen e-postaların sahiplerini users ve domains tablolarından kontrol edecek,eğer varsa gerekli klasörleri oluşturacaktır.

Dansguardian + Squid problemi.Nam-ı diğer follow_x_forwarded_for

Açıklama

Tıpkı diğer yazdığım belgeler gibi bu belge de kirlidir.Ama siz buna aldırmayabilirsiniz.Çünkü işe yaramaz şeyler yazmamaya gayret ediyorum.Bozuk türkçem için tekrar özür.Birgün düzelecek:)

Neden Dansguardian? Squid bize yetmez mi?

Eğer konu içerik filtreleme ise yetmez.Çünkü squid çok başarılı bir http proxydir,access control list yapısı bence benzersizdir ancak konu içerik filtreleme (dikkat adres satırı değil,içerik!) olunca ne yazıkki yetersiz kalıyor.

Dansguardian işte burda devreye giriyor,squidin yapamadığı içerik filtrelemeyi başarıyla gerçekleştiriyor.

Peki neden sadece dansguardian kullanamıyoruz?

Öööle yapmış adamlar napalım yani:)Dansguardian mutlaka bir http proxy ile beraber çalışmak zorunda.Cachei,Acl,Delay Pools,Httpd Accel gibi özellikleri yok.Tek yaptığı iş web sayfalarının içeriğine bakmak.Bunu da gayet iyi yapıyor.

Sorun ne peki?

Dansguardian ile squidi aynı makinaya kurdunuz.dansguardian da ve squidde standart ayarlarları yaptınız.Herşey çalışır durumdayken squid’in access.log una bir bakın.Tüm web isteklerinin kaynak ip’lerinin değişmiş olduğunu göreceksiniz.Artık tüm isteklerin kaynağı proxy sunucunuz gibi görünmektedir.Bu durumda squid’in access control listeleri kullanılamaz hale gelir.

Çözüm ne?

Bildiğim kadarıyla ilk çözüm squid 2.4 versiyonuna bir yamayla başladı.Ama ben bununla ilgilenmedim.Burada yapacağımız squid kurulumu kaynaktan derleme olacaktır.(squid-2.6.STABLE6.tar.gz)

Dansguardian için debian stable depolarından normal kurulum yeterli olacaktır.Dansguardian tarafında sadece dansguardian.conf ta yapacağımız iki satır değişiklik,hepsi bu.

Squid Kurulumu

Yukarda bahsettiğim tar.gz dosyasını www.squid-cache.org dan indirin.Sisteminizde istediğiniz bir yere açın.Şu parametrelerle derleyin.

./configure –enable-follow-x-forwarded-for –enable-linux-netfilter –enable-delay-pools –enable-arp-acl

make all

ve son olarak make install

Aşağıda verdiğim derleme seçeneklerini kısaca açıklamaya çalışacağım

ilk parametre olan enable-follow-x-forwarded-for bizim sorunumuzu çözen parametre.Başka proxy üzerinden istek yapan hostların kendi ip sini bulmamıza yardımcı olur.Buradaki başka proxy dansguardian oluyor.

–enable-linux-netfilter bize transparan proxy yapmamıza imkan tanıyan derleme seçeneğidir.

–enable-delay-pools : Delay Pools Squid’de bandwidth management yapmanıza imkan tanır.

–enable-arp-acl : Ip değiştirmeyi bilen akıllı kullanıcılarınıza,bunun yeterli olmayacağını göstermenize imkan tanıyan parametre.Onlar ethernet kartı veya mac adreslerini değiştirmeyi öğreninceye kadar ,size kurallarınızı uygulayabilme imkanı tanır.

Herhangi bir hata yoksa,squid sisteminize başarıyla kurulmuştur.Eğer farklı bir yol belirlemediyseniz squid /usr/local altındadır.

Aşağıdakileri adım adım yapın.
Proxy adında bir grup ve bu gruba üye aynı isimde bir kullanıcı yaratın.

/usr/local/squid/var/log ve /usr/local/var/cache dizinlerinin haklarını bu kullanıcı ve grupla değiştirin.

/usr/local/squid/etc/squid.conf un bir yedeğini alın.Aşağıdaki satırları dosyanıza ekleyin.

İlk sayfada;

# Squid normally listens to port 3128
http_port sunucu_ip_no:3128 transparent

Acl ile ilgili bölümde koyu olan bölümleri ilave edin.
acl all src 192.168.0.0/255.255.255.0 (siz bunu kendi networkünüze göre ayarlayın)
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
follow_x_forwarded_for allow all

acl_uses_indirect_client on
# delay_pool_uses_indirect_client on (band genişliği sınırlaması yapmıyorsanız buna ihtiyacınız olmaycaktır.
log_uses_indirect_client on

Daha sonra http_access ile başlayan bölüme geçin, kendi politikanıza göre izinleri ve yasakları ayarlayın.

Dosyayı kaydederek çıkın.Squid başlatılmadan önce cache dizin yapısı oluşturulmalıdır.

/usr/local/squid/sbin/squid -z ile cache yapısını oluşturun.Burada bir hata alırsanız dosya izinlerini kontrol edin.

Hata yoksa;

/usr/local/squid/sbin/squid

komutu ile squid çalışacaktır.

Dansguardianın Ayarlanması

Daha önce de belirttiğim gibi dansguardianın standart kurulumu yeterli.Debian veya türevi bi OS kullanıyorsanız apt-get install dansguardian komutu ile sisteminize kurabilirsiniz.

Not:Eğer bunu da kaynaktan derlemek isterseniz dansguardian’ın virüs tarama yeteklerini incelemenizi tavsiye ederim.Ben çok başarılı bulamadım.Özellikle flash web sitelerinde yükleme esnasında çok bekletiyor.Zaten virüs dediğimiz şey sadece web sayfalarında gelse bu kadar başımız ağrımazdı.Anti-virus koruma istiyorsanız size snort_inline+clamav ı tavsiye ederim.Onun dökümanı da bu blogda mevcuttur.Reklam!

/etc/dansguardian altında dansguardian.conf dosyasını açın.

İlk satırlarda UNCONFIGURED yazısı başına bir # ilave edin.

# DansGuardian config file for version 2.8.0

# **NOTE** as of version 2.7.5 most of the list files are now in dansguardianf1.conf

# Comment this line out once you have modified this file to suit your needs
#UNCONFIGURED

Daha sonra şu bölümleri ayarlayın

# Network Settings
#
# the IP that DansGuardian listens on. If left blank DansGuardian will
# listen on all IPs. That would include all NICs, loopback, modem, etc.
# Normally you would have your firewall protecting this, but if you want
# you can limit it to only 1 IP. Yes only one.
filterip = sunucu_ip_no

# the port that DansGuardian listens to.
filterport = 8080

# the ip of the proxy (default is the loopback – i.e. this server)
proxyip = sunucu_ip_no

# the port DansGuardian connects to proxy on
proxyport = 3128

Sonra biraz daha ilerleyerek şu satırları bulun değerleri on yapın.

# Misc settings

# if on it adds an X-Forwarded-For: to the HTTP request
# header. This may help solve some problem sites that need to know the
# source ip. on | off
forwardedfor = on

# if on it uses the X-Forwarded-For: to determine the client
# IP. This is for when you have squid between the clients and DansGuardian.
# Warning – headers are easily spoofed. on | off
usexforwardedfor = on

Dosyayı kaydederek çıkın.Dansguardian’ı start edin.Squidin çalıştığına emin olun.En son bir client başına geçerek birkaç web sayfasına girin.Daha sonra

tail -f /usr/local/squid/var/logs/access.log yazarak istekleri izleyin.Artık squid’de gerçek client ip lerini görebilecek ve buna göre kendi acl lerinizi yazabileceksiniz.