04 Temmuz 2009 Cumartesi, 02:56

Debian üzerinde Postfix ve Courier ile SMTP, POP3 ve IMAP Mail Server kurulumu

09 Ekim 2008 Perşembe, 19:09
Bu yazı kategorisi altında yayımlandı, 2 Yorum aldı.

Debian yüklü bir makinaya SMTP/POP3/IMAP server kuracağız. Bu sistem bilgileri MySQL veritabanından alacak. Böylece web üzerinden bilgiler rahatlıkla güncellenebilecek.

Hazırlık

Kurulması gereken paketler:

postfix
postfix-mysql

courier-authdaemon
courier-authmysql
courier-imap
courier-imap-ssl
courier-pop-ssl
courier-pop

libsasl2
libsasl2-dev
libsasl2-modules
libsasl2-modules-gssapi-heimdal
libsasl2-modules-sql

Paketlerin açıklamaları:

postfix: SMTP Server için
courier: POP3 ve IMAP Server için
libsasl2: SMTP kimlik doğrulama için

MySQL Ayarları

MySQL’in kurulu olduğunu ve aşağıdaki şekilde yapılandırıldığını varsayıyoruz.

User: mail@localhost
Pass: 12345678
DB: mail

mail schema’sı için yukarıdaki kullanıcıya tam yetki verilmiş olması gerekiyor. Ayrıca kullanıcının @localhost şeklinde ayarlanmış olması güvenlik için gerekli.

MySQL Tabloları

CREATE TABLE `domains` ( #domain bilgilerinin tutulduğu tablo
`domain` VARCHAR(128) NOT NULL, #domain adı
`transport` VARCHAR(32) NOT NULL DEFAULT ‘virtual:’, #domain tipi, ‘local:’ ya da ‘virtual:’ olacak.
PRIMARY KEY (`domain`)
)
CHARACTER SET ascii;

CREATE TABLE `mailboxes` ( #posta kutularının ve hesapların tutulduğu tablo
`address` VARCHAR(128) NOT NULL, #mail adresi
`passwd` VARCHAR(128) DEFAULT NULL, #açık mail şifresi
`name` VARCHAR(128) DEFAULT NULL, #
`maildir` VARCHAR(128) NOT NULL, #maildir yolu (’user/’ şeklinde)
`imapok` TINYINT(1) UNSIGNED NOT NULL DEFAULT ‘1′, #pop3 ve imap hesabı aktif ise 1 değilse 0
PRIMARY KEY (`address`)
)
CHARACTER SET ascii;

Mail Klasörleri

home (ev) klasörü;
/var/mail

user kullanıcısı için mail klasörü;
/var/mail/user

/var/mail ve alt dizinler için;
Sahiplik mail:mail
İzinler 700
+t modu olmamalı (Debian ilk kurulduğunda sanırım +t şeklinde geliyor).

Debian için bendeki mail uid=8, mail gid=8.
Ev dizininin altına maildirmake ile mail klasörleri yaratılabilir.

Dikkat edilecek noktalar;

ASCII yapılandırma dosyaları unix tarzı olmalı. (CR LF değil, sadece LF).

Yapılandırma dosyalarındaki açıklama satırlarının belirteçleri en başta olmalı. (# en başta olmalı, yoksa hata verebiliyor.)

Yapılandırma dosyalarının izinleri paketlerin okuyabileceği şekilde ayarlanmış olmalı.

Mail klasörlerinin bulunduğu ev dizini ve mail klasörlerinde +t modu olmamalı ve izinler doğru ayarlanmış olmalı.

Courier (POP3, IMAP Server)

Courier kullanıcı kontrolü için,
/etc/courier/authmysqlrc aşağıdaki gibi ayarlanmış olmalı. #MySQL server adresi

MYSQL_SERVER 127.0.0.1
#MySQL kullanıcı adı ve şifresi
MYSQL_USERNAME mail
MYSQL_PASSWORD 12345678
#Veritabanı adı
MYSQL_DATABASE mail

#Socket dosyası fakat gerek yok.
#MYSQL_SOCKET /tmp/mysql.sock

MYSQL_USER_TABLE mailboxes

#Crypted ve açık şifre alanları. Açık şifre alanını kullandım.
#MYSQL_CRYPT_PWFIELD cryptpasswd
MYSQL_CLEAR_PWFIELD passwd

#Kullanıcı ve grup no alanları. Ben mail:mail kullandığım için sabit.
MYSQL_UID_FIELD ‘8′
MYSQL_GID_FIELD ‘8′

#Fikrim yok. Tabloda NULL olsa bile sorun yapmıyor.
MYSQL_NAME_FIELD name

#Kullanıcı adı alanı. İki program arasında uyumluluk olması için adresi seçtim.
MYSQL_LOGIN_FIELD address

#home ve maildir dizinleri. Home dizinini sabit kullandım. Maildir user/ şeklinde olmalı.
MYSQL_HOME_FIELD ‘/var/mail’
MYSQL_MAILDIR_FIELD maildir

#Where sorgusu. IMAP ve POP3 için aktifliğini sorgulattım. 1 de olabilir.
MYSQL_WHERE_CLAUSE imapok = 1

courier-authmysql modülünü çalıştırmak için,
/etc/courier/authdaemonrc içinde aşağıdaki değişiklik yapılmalı.

authmodulelist = “authpam authmysql”

Postfix (SMTP Server)

/etc/postfix/main.cf içinde temel ayarları aşağıdaki gibi yapıyoruz.

alias_maps = hash:/etc/aliases
transport_maps = mysql:/etc/postfix/mysql/transport_maps.cf
virtual_maps = mysql:/etc/postfix/mysql/virtual_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf

virtual_uid_maps = static:8
virtual_gid_maps = static:8
virtual_minimum_uid = 8
virtual_minimum_gid = 8
virtual_mailbox_base = /var/mail

myhostname = localhost
mydomain = localhost
myorigin = localhost
#mynetworks =
mydestination = $transport_maps
relay_domains = localhost

smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination, reject_unknown_recipient_domain, reject_unverified_recipient

broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = localhost

/etc/postfix/master.cf içinde gerekmediği sürece değişiklik yapmıyoruz.

SMTP kimlik doğrulaması için;
/etc/postfix/sasl/smtpd.conf aşağıdaki gibi olmalı.

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sasl_mech_list: login plain cram-md5 digest-md5
mech_list: plain login cram-md5
sql_user: mail
sql_passwd: 12345678
sql_hostnames: 127.0.0.1
sql_database: mail
sql_select: SELECT passwd FROM mailboxes WHERE address=’%u@%r’

Aşağıdaki dosyaları oluşturuyoruz:

/etc/postfix/mysql/transport_maps.cf

hosts=127.0.0.1
user=mail
password=12345678
dbname=mail
table=domains
select_field=transport
where_field=domain

/etc/postfix/mysql/virtual_maps.cf

hosts=127.0.0.1
user=mail
password=12345678
dbname=mail
table=mailboxes
select_field=address
where_field=address

/etc/postfix/mysql/virtual_mailbox_maps.cf

hosts=127.0.0.1
user=mail
password=12345678
dbname=mail
table=mailboxes
select_field=maildir
where_field=address

Ayarlarımız tamamdır. Şimdi courier ve postfix’i aşağıdaki komutlar ile yeniden başlatıyoruz:
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-imap restart
/etc/init.d/postfix restart

MySQL tablolarındaki ayarlara göre SMTP/POP3/IMAP sunucumuz artık çalışıyor.

Son güncelleme: 22.10.2007

Yorum yapabilirsiniz, veya kendi sitenizden geri izleme yapabilirsiniz.

2 Yorum “Debian üzerinde Postfix ve Courier ile SMTP, POP3 ve IMAP Mail Server kurulumu”

  1. yekimm
    01 Mart 2009, 21:42

    Merhaba,

    Debian 5.0 üzerinde aynı şekilde kurulumu tamamladım. Ancak virtual domain ler ve bunlara bağlı olarak kullanıcılar naısl oluşturulacak ?

    Saygılarımla..

  2. Orkun Karaduman
    08 Mart 2009, 02:22

    amacımız mail sunucumuzun bilgilerini mysql’den alması olduğuna göre; bilgileri(domain’leri ve mail adreslerini) yazının başında belirtilen mysql tablolarına eklemek durumundasınız. ya bir program aracılığı ile ya da mysql command line üzerinden. bu konfigurasyondan bir mucize beklemeyin. buradaki amaç sadece bilgileri mysql’den almak. eğer bilgileri mysql’den alırsak mail sunucumuzu doğrudan kendi yazacağımız betikler ve programlar üzerinden mysql tablolarını değiştirerek kontrol edebiliriz.

Yorum Yapın