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.
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.
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.
İleti gitmiştir.
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
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 ile spamassassin kullanmak için öncelikle
| linuxprompt~# cd /etc/default/spamassassin |
dosyasının içine editor ile girip ENABLED=0 olan satırı
| linuxprompt~# cd /usr/share/perl5/Mail/SpamAssassin/ |
komutu ile klasörüne girin.
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.
| 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
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.
|