Ana Sayfa  |  Makaleler  | Programlama  | Haberler Forum  |  İpuçları  |  Download  |  E-Mail
     
       
       
         
           
           
           
           
       
   
   
 
COURIER : MTA - POP - MYSQL - SSL - SPAMASSASIN - SQWEBMAIL
( soner.sag@linuxprompt.com )

 

Giriş

Courier hızlı olduğu kadar güvenli dir MTA 'dır. Biz bu güvenliği MYSQL ile birleştirip, kullanım kolaylığını üst seviyeler de tutmak ilk hedefimiz. Bu sebepten Courier 'ın moduler yapısı amacımıza ulaşmamızda bize büyük ölçüde yardımcı olacaktır. Bu Döküman da oluşturacağımız mail tablosu hem phpmyadmin ile hmde konsoldan mysql komutları ile anlatılmıştır. Bunun sebebi bazı serverların "non-dedicated" çalışmasındandır. Bazı serverlarda masaüstü ( Kde, Gnome ) olmayabilir. Moduler yapıların en büyük özelliklerinden birisi de problemlerin tanısının daha hızlı konabilmesidir. Arızayı bulmanın temel prensibi arızayı kendi alanı kadar küçültmektir. Courier 'ın webmail 'i ile istediğimiz yerden maillerimizi kontrol etmemizi sağlayacak. Spammassassin güvenliği ile spam karakterindeki mailler hem sistemimizin trafiğinin yoğunlaşmamasını hemde gereksiz içerikli maileri uzaklaştırmak için kullanılacaktır.

GEREKLİ PAKETLER

Kontrol yapmak için aşağıdaki komutları sırasıyla girin ve eksik paket olup olmadığını kontrol edin.

linuxprompt~# dpkg -l |grep -E "courier|mysql|sqwebmail"

 

Courier için Gerekli Paketler :
courier-mta  
courier-authdaemon  
courier-authlib  
courier-authlib-mysql  
courier-authlib-pipe  
courier-authlib-userdb  
courier-base  
courier-doc  
courier-imap  
courier-imap-ssl  
courier-maildrop  
courier-pop  
courier-pop-ssl  
courier-ssl  

 

MYSQL için Gerekli Paketler :
mysql-server  
mysql-client  
libmysqlclient15-dev  

 

WebMail için Gerekli Paketler :
sqwebmail  

 

MYSQL ( KONSOL )
(Mail.sql Tablosu )

Konsol 'dan mysql tablosu oluşturmak phpmyadmin 'de oluşturmak kadar kolaydır fakat daha zahmetli bir iştir. Tabloları bir dosyaya yükleyip mysql 'e aktarmak mümkündür fakat buradaki amacımızın bir taneside MYSQL 'e aşinalık kazanmak olduğu için bu yolu tercih edeceğiz.

linuxprompt~# mysq -u root -p

komutunu sisteme verdikten sonra mysql parolasını yazın.
mail adında bir database oluşturun.

mysql > create database mail;


Bu database üzerinde çalişacağınızı mysql 'e bildirin.

mysql > use mail;

bu database ile çalışacak kullanıcının yetkisi, adı ve parolasını belirtin.

mysql > grant all on mail.* to mail@localhost identified by 'parolam' with grant option;

Mysql 'de komutun sonunu belirtmek için ";" kullanılır. Bu yüzden uzun satırları girerken ";" işaretini verene kadar alt alta devam edebilirsiniz.

Bu doğrultuda aşağıdaki gibi tabloları ekleyin.

mysql > CREATE TABLE `aliases` (
type` set('site','system') NOT NULL default 'site',
`email` char(128) NOT NULL default '',
`dest` char(128) NOT NULL default '',
PRIMARY KEY (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

alias tablosunu girdik.

mysql >INSERT INTO `aliases` (`type`, `email`, `dest`) VALUES
('system', 'root', 'info@alan_adi.com.tr'),
('system', 'root', 'info@alan_adi.com.tr'),
('system', 'postmaster', 'info@alan_adi.com.tr');

alias tablosuna iki tanımlama yaptık.

mysql > mysql>CREATE TABLE `domains` (
`domain` char(128) NOT NULL default '',
`type` enum('local','relay','manual_relay') NOT NULL default 'local',
`relay_host` char(128) NOT NULL default '',
PRIMARY KEY (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

domain tablosunu girdik.

mysql >INSERT INTO `domains` (`domain`, `type`, `relay_host`) VALUES
('alan_adi.com.tr', 'local', 'alan_adi.com.tr');

domain tablosuna iki bir tanımlama yaptık.

mysql > CREATE TABLE `passwd` (
`email` char(128) NOT NULL default '',
`crypt` char(128) NOT NULL default '',
`clear` char(128) NOT NULL default '',
`name` char(128) NOT NULL default '',
`uid` int(10) unsigned NOT NULL default '8',
`gid` int(10) unsigned NOT NULL default '8',
`home` char(255) NOT NULL default '',
`maildir` char(255) NOT NULL default '',
`quota` char(255) NOT NULL default '',
PRIMARY KEY (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

passwd tablosunu girdik.

mysql >INSERT INTO `passwd` (`email`, `crypt`, `clear`, `name`, `uid`, `gid`, `home`, `maildir`, `quota`) VALUES
('info@alan_adi.com.tr', 'MyV6Sx381qW/Q', 'sifre', 'info', 8, 8, '/var/mail/vdomains/alan_adi.com.tr/users/info/',
'/var/mail/vdomains/alan_adi.com.tr/users/info/Maildir', ''),
('admin@alan_adi.com.tr', 'in2HPS9Q5AM4M', 'sifre', 'admin', 8, 8, '/var/mail/vdomains/alanadi.com.tr/users/admin/',
'/var/mail/vdomains/alan_adi.com.tr/users/admin/Maildir', '');

passwd tablosuna iki tanımlama girdik.

Courier - MTA 'da birçok mail servisi gibi gelen smtp talepleri EHLO ile karşilar. Bir mail sunucusuna telnet kullanarak aşağıdaki satırları yazdığınız 'da komut satırından mail gönderebileceğinizi göreceksiniz.

mysql > telnet 85.105.52.*** 25

220 mail.linuxprompt.com ESMTP *** Mon, 25 Feb 2008 18:56:31 +0200

Selamlaşma

linuxprompt~# EHLO linuxprompt.com
250-master Ok.
250-AUTH LOGIN CRAM-MD5
250-AUTH=LOGIN CRAM-MD5 X-NETSCAPE-HAS-BUGS
250-AUTH=LOGIN CRAM-MD5 X-NETSCAPE-HAS-BUGS
250-STARTTLS
250-XVERP=Courier
250-XEXDATA
250-XSECURITY=NONE,STARTTLS
250-PIPELINING
250-8BITMIME
250-SIZE
250 DSN

Gönderen adres istenir.

MAIL TO:<soner76sag@hotmail.com>
250 Ok.

Alıcı adres girilir.

RCPT TO:<admin@linuxprompt.com>
250 Ok.

İleti gönderimeye hazırdır. Data komutu gönderilir.

DATA XXXX

İleti gitmiştir.

QUIT

Quit ile çıkılır.

SMTP mesajları gönderici ye aşağıdaki gibi döndürülür.

2** Kabul edildiğinde
4** Geçici bir problem oluştuğunda
5** Red edildiğinde

 

İŞLEM YAPILACAK DOSYALAR VE İÇERİKLERİ

İlk olarak authmysql dosyasını MYSQL'e bağlamak. /etc/courier/authmysql dosyasını vi editör de yazabilirsiniz veya http://www.linuxprompt.com/download/authmysqlrc adresinden çekebilirsiniz.

Dosyanın Yolu : /etc/courier/authmysql
Dosyann İçeriği :  
  MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD portsentry
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_DATABASE mail
MYSQL_USER_TABLE passwd
MYSQL_CRYPT_PWFIELD crypt
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD email

MYSQL_HOME_FIELD home
MYSQL_NAME_FIELD name


Dosya İçeriğinin Açıklaması :
MYSQL_SERVER MYSQL Kullanıcısı
MYSQL_USERNAME Veritabanı Kullanıcısı
MYSQL_PASSWORD Veritabanı Kullanıcı Şifresi
MYSQL_SOCKET soket
MYSQL_DATABASE Veritabanı Adı
MYSQL_USER_TABLE Mail Kullanıcı Tablosu
MYSQL_CRYPT_PWFIELD Passwd Tablosundaki Şifre Satırı
MYSQL_UID_FIELD Kullanıcı ID
MYSQL_GID_FIELD GRUP ID
MYSQL_LOGIN_FIELD Kullanıcı Login Adı
MYSQL_HOME_FIELD Kullanıcı Mail Dizini
MYSQL_NAME_FIELD Kullanıcı İsimlerinin Bulunduğu Alan

 

Dosyanın Yolu : /etc/courier/defaultdomain
Dosyann İçeriği :  
  linuxprompt.com

 

Dosyanın Yolu : /etc/courier/locals
Dosyann İçeriği :  
  localhost
linuxprompt.com
.linuxprompt.com

 

Dosyanın Yolu : /etc/courier/esmtpacceptmailfor.dir/vmail
Dosyann İçeriği :  
  linuxprompt.com
.linuxprompt.com

Bu dosyalar da alan adınızı yazdıktan sonra

linuxprompt~# vi /etc/courier/esmtpd

dosyasınanın sonuna

ESMTPDSTART=YES

satırını eklememiz gerekmektedir. Aksi takdirde courier-mta start olamıyacaktır. Aşağıdaki komutları çalıştırıp aliases.dat, hosteddomain.dat, smtpaccess.dat dosyalarının oluşmasını sağlayalım

linuxprompt~# makesmtpaccess
linuxprompt~# makehosteddomains
linuxprompt~# makealiases

Sıra mail kullanıcılarının bilgilerinin courier 'a bildirilmesine geldi.

linuxprompt~# vi /etc/passwd

ile parola dosyasını açip

mail:x:8:8:mail:/var/mail:/bin/sh

satırını aşağıdaki gibi düzeltin.

mail:x:8:8:mail:/var/mail/vdomains/alan_adı.com/users:/bin/sh

Sırasıyla aşağıdaki komutları girin.

linuxprompt~# cd /etc/courier
linuxprompt~# mkdir userdb
linuxprompt~# chmod 700 userdb
linuxprompt~# cd userdb
linuxprompt~# pw2userdb |grep "mail"|grep -v "fetc" > vmail
linuxprompt~# makeuserdb

courier-authdaemon 'ımız mysql den çalışacağı için authdaemonrc dosyasında authmodulelist satırı aşağıdaki gibi olmalıdır.

authmodulelist="authmysql"

courier-mta gelen mail'in konusuna türkçe karakter girildiğinde "CORRUPTED MESSAGE" başlikli otomatik bir mail gelmektedir. Bunu düzeltmek için;

linuxprompt~# mkdir /etc/courier/bofh
linuxprompt~# vi /etc/courier/bofh

dosyasi açilarak editörle açilir.

Dosyanın içerisine aşağıdaki parametre girilir.

linuxprompt~# opt BOFHBADMIME=accept

yazılıp kaydedilerek çıkılır.

COURIER - SPAMASSASSIN

Courier ile spamassassin kullanmak için öncelikle

linuxprompt~# cd /etc/default/spamassassin

dosyasının içine editor ile girip ENABLED=0 olan satırı

ENABLED=1

linuxprompt~# cd /usr/share/perl5/Mail/SpamAssassin/

komutu ile klasörüne girin.

linuxprompt~ #wget http://linuxprompt.com/download/AuthCourier.pm

dosyasını indirin.

linuxprompt~# vi /usr/sbin/spamd

dosyasına girin.

use Mail::SpamAssassin;
use Mail::SpamAssassin::NoMailAudit;
use Mail::SpamAssassin::NetSet;

satırlarından sonra

use Mail::SpamAssassin::AuthCourier;

satırını ekleyin.

linuxprompt~# /etc/init.d/spamassassin restart

komutuyla sistemdeki spamassassin 'i yeniden başlatın.

COURIER - SQWEBMAIL

 

WebMail için Gerekli Paketler :
sqwebmail  

Aşağıdaki dizinleri oluşturun.

linuxprompt~# mkdir /srv
linuxprompt~# mkdir /srv/www
linuxprompt~# mkdir /srv/www/cgi-bin
linuxprompt~# mkdir /srv/www/linuxprompt.com
linuxprompt~# mkdir /srv/www/linuxprompt.com/mail

Aşağıdaki komutu konsoldan yazıp sqwebmail paketini kurun.

linuxprompt~# apt-get install sqwebmail
linuxprompt~# cp -a /usr/share/sqwebmail /srv/www/linuxprompt.com/

sqwebmail 'i mail.linuxprompt.com şeklinde çalıştıracağız. Bu şekilde çalıştırabilmek için apache de <VirtualHost> tanımlamı yapmamız gerekecektir.

DNS sunucumuzda da aşağıdaki tanımın yapılmış olması şart. Bu tanımlamalar /var/cache/bind dizininin altında bulunmaktadır.

mail IN A <MAIL SUNUCU IP ADRESI>

Buraya kadar herşey normal ise bundan sonraki iş artık apache 'de. ilgili template dosyasını isterseniz linuxprompt.com 'dan

linuxprompt~ #wget http://linuxprompt.com/download/vhost_template.conf

komutunu kullanarak çekebilirsiniz.

Apache2 'nin en düşük konfigurasyonu aşağıdaki gibi olmalıdır.

NameVirtualHost *
NameVirtualHost 10.1.0.1

<VirtualHost * 10.1.0.1>
DocumentRoot /srv/www/linuxprompt.com/mail

<Directory "/srv/www/linuxprompt.com/mail">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ServerName linuxprompt.com
ServerAlias mail.linuxprompt.com
ServerAdmin info@linuxpropt.com
</VirtualHost>

<VirtualHost * 10.1.0.1>
DocumentRoot /srv/www/linuxprompt.com
<Directory "/srv/www/linuxprompt.com">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Alias /phpmyadmin "/srv/www/phpmyadmin"
<Directory /srv/www/phpmyadmin/>
AllowOverride None
Order allow,deny
Allow from all
</Directory>

ServerName linuxprompt.com
ServerAlias www.linuxprompt.com
ServerAdmin info@linuxprompt.com
</VirtualHost>

Yukarıdaki dosyayı /etc/apache2/sites-available/ klasörüne yerleştirin.

linuxprompt~# cd /etc/apache2/sites-available
linuxprompt~# a2ensite vhost_template.conf
linuxprompt~# cd /srv/www/linuxprompt.com/mail
linuxprompt~# wget http://linuxprompt.com/download/index.html

Yukarıdaki komutları sırasıyla girin.

Apache ile SSI kullanacağımız için expires.load ve include.load modullerinin yüklü olmasi gerekiyor. Bu iki modulu yüklemek için aşağıdaki komutları sırasıyla girin.

linuxprompt~# cd /etc/apache/mods-enabled
linuxprompt~# ln -s ../mods-available/include.load .
linuxprompt~# ln -s ../mods-available/expires.load .
linuxprompt~# /etc/init.d/apache2 restart

Browser 'dan mail.linuxprompt.com olarak sqmail 'e www.linuxprompt.com olarak 'da web sitemize girebiliriz.

Yazan : Soner SAĞ
Email : soner.sag@linuxprompt.com