magmalinux-temel-courier-yapilandirmasi

4. Temel Courier Yapılandırması

Bu bölümde basitçe Courier'ı çalışır hale getireceğiz. Courier ayarlarının ayrıntılarına sonraki bölümlerde değineceğiz.

4.1. Courier kullanıcı bilgileri için MySQL tablosunun oluşturulması

Courier'ın kullanacağı tabloyu oluşturmadan önce, bir veritabanı ve bu veritabanı için bir MySQL kullanıcısı oluşturalım (Bunun için MySQL in metin tabanlı istemcisini kullanıyoruz. Dilerseniz phpmyadmin ya da benzeri bir grafiksel kullanıcı arabirimi de kullanabilirsiniz):

# mysql -u root -p

komutunu çalıştırdıktan sonra, MySQL root kullanıcısının parolasını giriyoruz (root kullanıcısının parolasını hatırlamıyor iseniz "dpkg-reconfigure mysql-server-5.0" komutu ile kendinize yeni bir root parolası belirleyebilirsiniz). Parolayı girdikten sonra eğer herşey yolunda gitmiş ise şu cevabı almış olmalısınız:

# mysql -u root -p --default-character-set=utf8
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 30
Server version: 5.0.51a-12 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 

 

Satır başındaki mysql> sözcüğünden, şu anda MySQL'in komut satırı istemcisinde olduğumuzu anlıyoruz. MySQL'e mail isminde bir veritabanı yaratmak istediğimizi söyleyelim:

mysql> CREATE DATABASE mail CHARACTER SET utf8 COLLATE utf8_turkish_ci;
Query OK, 1 row affected (0.00 sec)

Ufak bir ayrıntı: CHARACTER SET ile bu veritabanı için kullanılacak karakter setini belirledik. Daha sonradan, kullanıcı isimlerini saklarken türkçe karakter problemi yaşamamak için utf8 seçtik. COLLATE ile belirttiğimiz dil, veritabanı işlemlerinde alfabetik sıralama işlemi yaparken temel alınacak dili belirler.

 


Yeni yarattığımız mail veritabanını kullanmak istediğimizi söyleyelim:

mysql> use mail;
Database changed

 


mail veritabanı üzerindeki bütün yetkileri mail isimli kullanıcıya verelim:

mysql> grant all on mail.* to mail@localhost identified by 'parola' with grant option;
Query OK, 0 rows affected (0.00 sec)

 


MySQL ile son işimiz, kullanıcı bilgilerinin tutulacağı tabloyu oluşturmak. Bu tabloyu oluşturmadan önce sistemimizden biraz bilgi toplayalım.

İhtiyacımız olan bilgi sistemimizdeki mail kullanıcısının user id'si (uid) ve group id'si (gid). Bunları öğrenmek için /etc/passwd dosyasını herhangi bir editör ile açıp, mail: ile başlayan satırı bulup 3. ve 4. sütuna bakabiliriz:

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

Bizim örneğimizde görüldüğü üzere

3. sütun uid=8
4. sütun gid=8.

(Genellikle mail kullanıcısı için uid=8, gid=8 dir).

 

Bulduğumuz bu değerleri aşağıda oluşturduğumuz tablonun uid ve gid sütunu için varsayılan değerler olarak belirleyeceğiz (sizin sisteminizde bu sayılar farklı ise, aşağıdaki SQL kodunu kendinize uygun biçimde değiştirin).

mysql> CREATE TABLE passwd (
            id                    char(255) NOT NULL,
            crypt                 char(128) NOT NULL,
            clear                 char(128) NOT NULL,
            name                  char(128) NOT NULL,
            uid                   int(10) UNSIGNED DEFAULT '8' NOT NULL,
            gid                   int(10) UNSIGNED DEFAULT '8' NOT NULL,
            home                  char(255) NOT NULL,
            maildir               char(255) NOT NULL,
            defaultdelivery       char(255) NOT NULL,
            quota                 char(255) NOT NULL,
            options               char(255) NOT NULL,
            PRIMARY KEY  (`id`)
       );

Query OK, 0 rows affected (0.00 sec)
mysql> quit

 

Bu yarattığımız tablonun sütunları hakkında biraz açıklama yapalım:


id: Kullanıcının e-posta adresinin '@' işaretinden önceki kısmının saklandığı sütundur (Örneğin e-posta adresi senem@magmalinux.org ise bu sütun da senem tutulacak). Eğer birden fazla alan adınız var ise ve her bir alan adı için ayrı hesaplar oluşturacaksanız, bu sütun da e-posta adresini alan adı bilgisi ile birlikte tutmanız gerekir (Örneğin e-posta adresleri lale@magmalinux.org ve lale@magmalinux.net şeklinde iki ayrı hesabınız var ise, bu sütunda tutacağınız bilgi alan adını da içermelidir. Böylelikle hesapların hangi alan adına ait olduğu ayırt edilebilir).
 

crypt: Kullanıcı parolasının şifrelenerek saklandığı sütundur (Parolalar bu sütunda şifrelenmiş olarak saklanır. Dolayısıyla sistem yöneticisi, tablodaki verileri incelerken parolanın ne olduğunu göremez. Ayrıca veritabanı kötü niyetli insanların eline geçtiğinde, parolaların şifrelenerek saklanması bize ekstra koruma sağlar).
 

clear: Kullanıcı parolasının şifrelenmeden saklandığı sütundur. CRAM-MD5 gibi şifre doğrulama yöntemleri tarafından bu sütuna ihtiyaç vardır (Parolalar bu sütunda şifrelenmeden saklanır. Bu da sistem yöneticisinin parolaları görebileceği anlamına gelir. Daha büyük tehlike, bu veritabanına yetkisiz kişiler eriştiği zaman gelir. Bu sebeple bu sütuna boş değerler de verebilirsiniz (Fakat boş değer verdiğiniz taktirde kullanıcı doğrulaması için ileride bahsedeceğimiz CRAM-MD5 yöntemini kullanamazsınız)).
 

name: Kullanıcının gerçek ismi bu sütunda saklanır (Örneğin “Senem Kılıç” gibi).
 

uid: Kullanıcının e-posta dizinine (Maildir) erişilirken kullanılacak kullanıcı id'si (Yanlış olması durumunda, kullanıcı hesabına gelen e-postalara erişemeyebilir). Bu sütunda yukarıda /etc/passwd dosyasından edindiğimiz mail kullanıcısının id'sini kullanıyoruz.
 

gid: Kullanıcının e-posta dizinine erişilirken kullanılacak grup id'si. Bu sütunda yukarıda /etc/passwd dosyasından edindiğimiz mail kullanıcısının grup id'sini kullanıyoruz.
 

home: Kullanıcının ev dizininin yolu. Bir diğer deyişle, kullanıcının e-posta dizinini (Maildir) barındıran dizinin yolu (Örneğin: /var/mail/magmalinux.com/senem/).
 

maildir: Kullanıcının e-posta dizinin yolu (Örneğin: /var/mail/magmalinux.com/senem/Maildir). / ile başlayan mutlak yol vermek yerine, ev dizinine göreceli yol da belirtilebilir. Örneğin e-posta dizininiz Maildir isminde ve ev dizininin içerisinde ise, bu sütuna sadece "Maildir" yazabilirsiniz. Ayrıca, varsayılan değeri "Maildir" olduğundan, bu sütun boş bırakıldığında, ev dizini içerisinde Maildir dizini aranır.
 

quota: E-posta hesabı kota ayarları ile ilgili değerlerin tutulduğu sütundur. Doldurulması zorunlu değildir. 'S' tüm e-postaların toplam boyutu sınırını, 'C' ise bir e-posta dizininde en fazla kaç e-posta olabileceğini belirtir. Birden fazla seçenek virgülle ayrılarak belirtilebilir. Örneğin, lale kullanıcısının bu sütununa 10000000S,1000C girdiğinizde, bu kullanıcının kotası toplam 10.000.000 byte veya 1000 mail ile sınırlanır.
 

options: Bazı kullanıcıya özgü seçenekleri belirtmek için bu sütun kullanılır (Örneğin, senem kullanıcısı için imap kapatılmak isteniyorsa, senem kullanıcısı kaydının bu sütununa disableimap=1 girilebilir. Webmail desteği kapatılmak isteniyorsa disablewebmail=1 girilebilir). Doldurulması zorunlu değildir. Birden fazla seçenek virgülle ayrılarak belirtilebilir. Örneğin lale kullanıcısı için disableimap=1,disablepop3=1,disablewebmail=1

 

4.2. Courier MySQL Ayarları

Courier'i MySQL ile konuşturmak için öncelikle, Courier'e kullanıcı doğrulaması için authmysql'i kullanmasını söyleyelim. Bunun için /etc/courier/authdaemonrc dosyasındaki değişkenleri aşağıdaki gibi değiştirin:

authmodulelist="authmysql"

Şimdi de Courier'ın MySQL'e bağlanabilmesi için gereken bilgileri verelim. /etc/courier/authmysqlrc dosyasını açıp aşağıdaki değişkenleri uygun biçimde değiştirin:

MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD parola
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_DATABASE mail
MYSQL_USER_TABLE passwd
MYSQL_CRYPT_PWFIELD crypt
MYSQL_CLEAR_PWFIELD clear
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD id
MYSQL_HOME_FIELD home
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_AUXOPTIONS_FIELD options


Dikkat ettiğiniz gibi, bu dosyadaki bilgiler, biraz önce yarattığımız MySQL tablosu ile eşleşmeli ki Courier ve MySQL birbirlerini duyabilsin.

MYSQL_SERVER: MySQL sunucunuzun nerede olduğunu belirtir (MySQL sunucunuz bir başka bilgisayarda ise, o bilgisayarın IP adresini ya da alan adını girin. Bizim örneğimizde MySQL ve Courier sunucusu aynı bilgisayarda çalışıyor. Bu yüzden, MYSQL_SERVER değişkenine localhost değerini verdik).
 

MYSQL_USERNAME: Courier'ın MySQL'e bağlanırken kullanacağı MySQL kullanıcısını belirtir. Hatırlarsanız MySQL veritabanımızı oluşturduğumuzda Courier'ın kullanması için bir de mail isminde bir MySQL kullanıcısı yaratmıştık.
 

MYSQL_PASSWORD: Courier'ın MySQL'e bağlanırken kullandığı kullanıcının parolasını belirtir.
 

MYSQL_SOCKET: MySQL socket dosyasının yolunu belirtir (socket dosyaları, birbiri ile konuşan süreçler tarafından kullanılır. Örneğin MySQL ile Courier birbiri ile iletişim kurarken bu socket dosyaları üzerinden iletişim kurar). Genellikle değeri /var/run/mysqld/mysqld.sock dur ("ls /var/run/mysqld/mysqld.sock" komutu ile doğrulayabilirsiniz).
 

MYSQL_PORT: MySQL sunucusunun dinlediği portu belirtir (Standart port 3306'dır).


MYSQL_DATABASE: Courier'ın kullanacağı veritabanını belirtir. Bu bölümün başında mail isminde bir veritabanı yarattığımızı hatırlayın.
 

MYSQL_USER_TABLE: Veritabanımız içerisinde, Courier kullanıcılarının bilgilerinin bulunduğu tablo. passwd isminde bir tablo yarattığımızı hatırlayın.
 

MYSQL_CRYPT_PWFIELD: Kullanıcı parolarının şifrelenerek saklandığı sütunu belirtir. Yukarıda passwd tablosundaki crypt sütununu hatırlayın.
 

MYSQL_CLEAR_PWFIELD: Kullanıcı parolalarının şifrelenmeden saklandığı sütunu belirtir.
 

MYSQL_UID_FIELD: UID değerinin saklandığı sütunu belirtir.
 

MYSQL_GID_FIELD: GID değerinin saklandığı sütunu belirtir.
 

MYSQL_LOGIN_FIELD: Kullanıcı adının (id) saklandığı sütunu belirtir. Bizim örneğimizdeki değeri id dir.
 

MYSQL_HOME_FIELD: Kullanıcının ev dizini yolunun saklandığı sütunu belirtir. Yani kullanıcı ev dizininin yolu, passwd tablosunda hangi sütunda tutuluyor ise buraya o sütunu yazmalısınız (Bizim örneğimizde home. passwd tablomuzu oluşturduğumuz SQL koduna bakınız).
 

MYSQL_NAME_FIELD: Kullanıcının gerçek isminin saklandığı sütunu belirtir.
 

MYSQL_MAILDIR_FIELD: Kullanıcı e-posta dizininin saklandığı sütunu belirtir.
 

MYSQL_QUOTA_FIELD: Kullanıcı kotasının tanımlandığı sütunu belirtir.
 

MYSQL_AUXOPTIONS_FIELD: Kullanıcıya özgü diğer seçeneklerin tanımlandığı sütunu belirtir.


Tekrar dikkat, authmysqlrc dosyasına girdiğiniz değerler önceki bölümde oluşturduğunuz passwd tablosu ile eşleşmeli ki, Courier MySQL'e bağlanabilsin. Aksi halde kullanıcılarınız giriş yapamayacaklar veya kullanıcıların doğrulanması ile ilgili bütün işlemler hata ile sonuçlanacaktır.

 

4.3. Alan Adı Ayarları

İlk adımımız Courier'e kendi alan adlarımızın neler olduğunu söylemek olacak. Tek bir alan adımızın olması durumu ile birden fazla alan adımızın olması durumunda yapacağımız ayarlar biraz farklılık gösterecek. Bu yüzden bu konuları farklı bölümlerde ele aldık.

 

4.3.1. Tek alan adı olduğu durumda

Tek alan adımız olduğu durumda, MySQL passwd tablomuzun id sütununda alan adı bilgisini tutmamız gerekli değil. Bu durumda yapacağımız tek ayar, Courier'a kullanıcı bilgileri sorgulaması yaparken, id sütununda alan adı bilgisinin tutulmadığını söylemek olacak.

/etc/courier/locals dosyasını açıyoruz (yoksa oluşturuyoruz) ve alan adımızı bu dosya içerisine yazıyoruz. Courier kullanıcı tablosuna bakarken, locals dosyasında yazan alan adlarını e-posta adresinden atar. Yani magmalinux.org alan adının locals dosyanızda yazdığını düşünelim. senem@magmalinux.org kullanıcısı araştırılırken, Courier @magmalinux.org kısmını atar (Bu yüzden kullanıcı tablosunun id sütununda @magmalinux.org u tutmayız). Örnek bir locals dosyasını inceleyelim:

localhost
magmalinux.org

/etc/courier/locals Dosyasınnın içine yazdıklarımızın aynı şekilde /etc/mailname dosyasınada yazmalıyız.

Tek alan adımız (magmalinux.org) olduğu halde, locals dosyasına localhost alan adını da ekledik. Böylelikle Courier'ın yüklü olduğu bilgisayar içerisinde e-posta gönderildiğinde, alan adı olarak localhost'u da kullanabiliriz. Yani Courier'ın yüklü olduğu bilgisayar dışından senem@magmalinux.org şeklinde ulaştığımız hesaba, Courier'ın yüklü olduğu bilgisayardan ulaşırken senem@localhost adresini de kullanabiliriz.


 

4.3.2. Birden fazla alan adı olduğu durumda

Birden fazla alan adımız olduğu durumda yapılandırmamız biraz değişiklik gösterebilir.


Eğer bütün alan adlarımıza ait hesaplar aynı olacaksa, yaptığımız ayarlama, tek alan adı için yaptığımız ayarlamaya oldukça benzer olacak. Yani senem@magmalinux.org ve senem@magmalinux.net aynı hesap olacaksa, bir önceki bölümde olduğu gibi alan adlarını /etc/courier/locals dosyasında belirtiyoruz. Örnek bir locals dosyası şu şekilde olabilir:

localhost
magmalinux.org
magmalinux.net

Yukarıdaki gibi bir locals dosyası olduğu durumda, Courier, senem@magmalinux.org ve senem@magmalinux.net gibi kullanıcıları, kullanıcı tablosunda (passwd) aramadan önce @magmalinux.org ve @magmalinux.net kısımlarını atar. Bu yüzden bu iki e-posta adresine gelen e-postalar, kullanıcı tablosundaki senem kullanıcısına gider. Bu durumda kullanıcı tablosunun id sütununda alan adı bilgisini tutmayız. Kısaca bir alan adı, locals dosyasında yazıyorsa, bu alan adına ait kullanıcılar araştırılırken, e-posta adresinin  @alanadi kısmı atılır.

 

 

Eğer alan adlarımızdaki hesaplarımız farklı olacaksa, yani senem@magmalinux.org ile senem@magmalinux.net birbirinden tamamıyla farklı iki hesap olacak ise; bu iki alan adımızı locals dosyasına yazmak yerine /etc/courier/hosteddomains dosyasına yazacağız (Dikkat! Bu durumda ortada hiç locals dosyamızın bulunmaması lazım). Courier, hosteddomains dosyasında yazan alan adları için kullanıcı tablosuna bakarken, e-posta adresinin alan adı bilgisini olduğu gibi bırakır. Böylelikle kullanıcı tablosunda senem@magmalinux.org ve senem@magmalinux.net gibi iki ayrı kullanıcı saklayabiliriz.

/etc/courier/hosteddomains dosyası oluşturmadan önce dikkat etmemiz gereken şey, bazı linux dağıtımlarında bunun bir dosya yerine dizin olduğudur. Eğer sisteminizde /etc/courier/hosteddomains bir dizin ise, bu dizin altında herhangi bir isimde bir dosya yaratıyoruz (Bu dizin altında birden fazla dosyaya sahip olabiliriz. Courier, hosteddomains dizini altındaki bütün dosyaları birleştirip, sanki hosteddomains dizini tek bir dosyaymış gibi davranacak). Örnek bir hosteddomains dosyası (ya da hosteddomains dizin ise hosteddomains/alanadlarim.txt dosyası) şu şekilde olabilir:

magmalinux.org
magmalinux.net

/etc/courier/hosteddomains dosyasında joker karakter de kullanabiliriz. Örneğin magmalinux.com altındaki tüm alt alan adlarına ait hesaplarımız var ise /etc/courier/hosteddomains dosyamız şu şekilde olacak:

magmalinux.org
magmalinux.net
magmalinux.com
.magmalinux.com

Dikkat!!! Bu dosya da ".magmalinux.com" sadece tüm alt alan adlarını kapsar (blog.magmalinux.com, forum.magmalinux.com gibi), fakat magmalinux.com alan adının kendisini kapsamaz. Bu yüzden hem "magmalinux.com" u hem de ".magmalinux.com" u yazdık.

Şimdi /etc/courier/hosteddomains dosyasında yaptığımız bu değişikliğin geçerli olması için kabukta:

# makehosteddomains

komutunu çalıştıralım. /etc/courier/hosteddomains dosyasında yaptığımız her değişiklikten sonra değişikliklerin geçerli olması için bu komutu çalıştırmamız gerek. Bunun için Courier'ı yeniden başlatmamıza gerek
yok.

Bir başka senaryo; Diyelim ki magmalinux.org ve magmalinux.net alan adlarının aynı hesaplara fakat cerenbilgisayar.com.tr'nin bunlardan farklı hesaplara sahip olmasını istiyorsunuz. Bu durumda hem locals dosyasını hem de hosteddomains dosyasını düzenleyeceğiz.

magmalinux.org ve magmalinux.net alan adlarımız aynı e-posta hesaplarına sahip olduğundan bu iki alan adı, locals dosyasında; cerenbilgisayar.com.tr ise hosteddomains dosyasında bulunmalıdır.

4.3.3. Genel Ayarlar


Varsayılan Alan Adı:/etc/courier/locals ya da /etc/courier/hosteddomains dosyasında belirttiğimiz alan adlarından hangisi bizim varsayılan alan adımız ise, bu alan adını /etc/courier/defaultdomain dosyasına giriyoruz. Örneğin:

magmalinux.org

 

SMTP Sunucusu Alan Adı Ayarları: SMTP sunucumuzun hangi alan adları için gelen e-postaları kabul edeceğini belirtelim. Courier'a bu alan adlarını söylemek için /etc/courier/esmtpacceptmailfor dosyasını kullanır. Bazı Linux dağıtımlarında esmtpacceptmailfor dosyası yerine esmtpacceptmailfor.dir dizini vardır. Eğer sizin sisteminizde esmtpacceptmailfor.dir dizini var ise, Courier, bu dizin altındaki her dosyayı birleştirip esmtpacceptmailfor.dir dizinine tek dosyaymış gibi davranacak. Örnek bir /etc/courier/esmtpacceptmailfor dosyasına bakalım (ya da örneğin esmtpacceptmailfor.dir/kabuledilenler.txt):

localhost
magmalinux.org
magmalinux.net
magmalinux.com
.magmalinux.com
cerenbilgisayar.com.tr

Şimdi yaptığımız değişikliğin geçerli olması için:

# makeacceptmailfor

komutunu çalıştırıyoruz.

 

SMTP HELO komutu: E-posta gönderdiğiniz bazı SMTP sunucuları spamlere karşı savunma için, SMTP iletişim kurallarında tanımlı HELO komutunda, sizden tam tanımlanmış alan adı bilgisi isteyebilirler (Örneğin magmalinux.org ya da mail.magmalinux.org gibi). Varsayılan olarak, Courier, HELO komutuyla birlikte sizin sadece konak bilginizi (hostname) gönderir (Örneğin "mail". Konak bilginizin ne olduğunuzu merak ediyorsanız, "hostname" komutunu kullanın). Eğer konak bilginiz, alan adını içermiyorsa ("mail" örneğinde olduğu gibi), Courier'a HELO komutu ile birlikte hangi tam tanımlı alan adı bilgisini kullanması gerektiğini söyleyebilirsiniz. Bunun için /etc/courier/ dizini altında esmtphelo isminde bir dosya oluşturun ve içeriğini alan adınıza uygun bir biçimde doldurun. Örnek bir esmtphelo dosyası şu şekilde olabilir:

magmalinux.org


Bir E-postanın Maksimum Boyutu: Mail sunucusuna gelen veya giden bir e-postanın maksimum boyutunu belirlemek için /etc/courier/sizelimit
dosyasını açıp (yoksa oluşturup), içindeki değeri 0 yapıyoruz.


Yanlış Başlık Bilgisine Sahip E-postaları Kabul Etme: Bazı e-posta istemcilerinin ürettiği yanlış başlıklardan ötürü, size CORRUPTED MESSAGE başlıklı e-postalar geliyor ise, bu e-postaları kabul etmek için, /etc/courier/bofh dosyasını açıp (yoksa oluşturup), içinde BOFHBADMIME değişkenini accept olarak ayarlıyoruz:

opt BOFHBADMIME=accept

 

Bu yapılandırma dosyaları hakkında daha ayrıntılı bilgi için “man 8 courier” komutunu kabukta çalıştırın.

 

SPAM ve DNS ayarlarındaki SPF Kaydı: Bazı SMTP sunucuları kendisine gelen e-postaları kabul ederken, e-postanın spam olup olmadığını anlamak için DNS ayarlarındaki SPF kayıtlarına bakabilirler. SPF kaydının nasıl yapılacağı bu belgenin sınırları dışındadır, fakat basitçe magmalinux.org bölge dosyasına, aşağıdaki kaydı eklemeniz gerekir:

magmalinux.org. IN      TXT     "v=spf1 a mx include:aspmx.googlemail.com ?all"

Bu kaydın ayrıntıları için bakınız DNS (BIND9).

 

4.4. Kullanıcı Hesabı Yaratma

4.4.1. Tek alan adı olduğu durumda

Kullanıcımızın ev dizinini yaratalım (Bu dizinin yolunu kullanıcı bilgilerinin tutulduğu tabloda home sütununa gireceğiz):

# mkdir /var/mail/senem

Yarattığımız ev dizini içerisine bir e-posta dizini oluşturalım (Dikkat! Bu dizini oluştururken maildirmake aracını kullandığımıza dikkat edin. Bu dizinin yolunu kullanıcı bilgilerinin tutulduğu tabloda maildir sütununa gireceğiz):

# maildirmake /var/mail/senem/Maildir

Yarattığımız bu dizinlerin sahibini ve grubunu mail yapalım (Eğer root kullanıcısı iken kullanıcı dizinlerini yaratmışsanız, her kullanıcı eklediğinizde bu işlemi yapmalısınız.):

# chown mail:mail -R /var/mail/senem

Dizinlerimizi yarattığımız bu kullanıcıyı MySQL'deki kullanıcı tablomuza (passwd) ekleyelim (Bu işlemi kabukta yapmak yerine phpmyadmin gibi grafiksel kullanıcı arayüzü tercih etmeniz işinizi kolaylaştıracaktır):

# mysql -u mail -p --default-character-set=utf8
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 46
Server version: 5.0.51a-6 (Debian)

mysql> use mail;
Database changed
mysql> INSERT INTO `passwd` (
          `id`,
          `crypt`,
          `clear`,
          `name`,
          `uid`,
          `gid`,
          `home`,
          `maildir`,
          `defaultdelivery`,
          `quota`,
          `options`
        )
        VALUES (
          'senem',
          ENCRYPT( 'deneme' ),
          '',
          'Senem Kılıç',
          '8',
          '8',
          '/var/mail/senem',
          '', '', '', ''
        );

Query OK, 1 row affected (0.05 sec)

mysql> quit;


Dikkat ettiyseniz kullanıcı adını alan adı bilgisi olmadan sakladık (id sütununda senem@magmalinux.org yerine senem kullandık). Ayrıca maildir sütununu da boş bıraktık (Courier varsayılan olarak ev dizini içerisinde Maildir isminde bir dizin arar. Biz de dizinlerimizi bu şekilde oluşturduğumuz için maildir sütununu doldurmayı gerekli görmedik).

Kullanıcıyı passwd tablosuna ekledikten sonra test edelim:

# authtest senem
Authentication succeeded.

     Authenticated: senem  (uid 8, gid 8)
    Home Directory: /var/mail/senem
           Maildir: (none)
             Quota: (none)
Encrypted Password: 1Yw2QG6pz9Kic
Cleartext Password: (none)
           Options: (none)

Yukarıdaki gibi bir çıktı alıyorsak herşey yolunda demektir (Değil ise Sorunun Kaynağını Tespit Etmek başlığına bakınız).

 

4.4.2. Birden fazla alan adı olduğu durumda

Öncelikle /var/mail dizini altında tüm kullanıcılarımızın ev dizinlerini ve e-posta dizinlerini içerecek alan adımıza ait bir klasör oluşturalım:

# mkdir /var/mail/magmalinux.org

Her bir alan adındaki hesap ayrı olarak çalışacaksa; diğer alan adlarınız için de dizin oluşturmanız düzen açısından önemlidir. Diğer alan adlarınız için de /var/mail altında dizin oluşturun.

Şimdi magmalinux.org alan adı için kullanıcı yaratalım.

Kullanıcımızın ev dizinini yaratalım:

# mkdir /var/mail/magmalinux.org/senem

Ev dizinimiz içerisinde e-posta dizini oluşturalım:

# maildirmake /var/mail/magmalinux.org/senem/Maildir

Yarattığımız bu dizinlerin sahibini ve grubunu mail yapalım (Eğer root kullanıcısı iken kullanıcı dizinlerini yaratmışsanız, her kullanıcı eklediğinizde bu işlemi yapmalısınız):

# chown mail:mail -R /var/mail/magmalinux.org

Dizinlerimizi yarattığımız bu kullanıcıyı MySQL'deki kullanıcı tablomuza (passwd) ekleyelim (Bu işlemi kabukta yapmak yerine phpmyadmin gibi grafiksel kullanıcı arayüzü tercih etmeniz işinizi kolaylaştıracaktır):

# mysql -u mail -p --default-character-set=utf8
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 497
Server version: 5.0.51a-6 (Debian)

mysql> use mail;
Database changed
mysql> INSERT INTO `passwd` (
          `id`,
          `crypt`,
          `clear`,
          `name`,
          `uid`,
          `gid`,
          `home`,
          `maildir`,
          `defaultdelivery`,
          `quota`,
          `options`
        )
        VALUES (
          'senem@magmalinux.org',
          ENCRYPT( 'deneme' ),
          '',
          'Senem Kılıç',
          '8',
          '8',
          '/var/mail/magmalinux.org/senem',
          '', '', '', ''
        );

Query OK, 1 row affected (0.05 sec)

mysql> quit;

Kullanıcı tablosunun id kısmında alan adı bilgisini de sakladığımıza dikkat edin. Kullanıcımızı ekledikten sonra test edelim:

# authtest senem@magmalinux.com
Authentication succeeded.
     Authenticated: senem@magmalinux.com  (uid 8, gid 8)
    Home Directory: /var/mail/magmalinux.org/senem
           Maildir: (none)
             Quota: (none)
Encrypted Password: b3bWeLU8f29Q2
Cleartext Password: (none)
           Options: (none)

Yukarıdaki gibi bir çıktı alırsak, herşey yolunda demektir (Değil ise Sorunun Kaynağını Tespit Etmek başlığına bakınız).

4.5. ESMTP ve POP3 servislerini başlatma

ESMTP servisini Courier açıldığında otomatik başlatmak için /etc/courier/esmtpd dosyasının sonundaki ESMTPDSTART değişkeninin değerini YES yapıyoruz. Yani:

ESMTPDSTART=YES

Kullanıcılarımızı e-mail gönderirken doğrulamak için /etc/courier/esmtpd dosyasında aşağıdaki değişiklikleri yapıyoruz:

ESMTPAUTH="LOGIN PLAIN CRAM-MD5 CRAM-SHA1"

POP3 servisini Courier açıldığında otomatik başlatmak için ise /etc/courier/pop3d dosyasının sonundaki POP3DSTART değişkeninin değerini YES yapıyoruz:

POP3DSTART=YES

Bu işlemden sonra Courier'ı yeniden başlatalım:

# /etc/init.d/courier-mta restart
# /etc/init.d/courier-pop restart