Bu bölümde, internet üzerinden e-posta alımı ve
gönderimi konusunda bilgiler verip Courier'ın nasıl
çalıştığını kabaca inceleyeceğiz.
İnternetteki her iletişimde olduğu gibi, e-postaların alımı ve
gönderimi sırasında kullanılan iletişimin de kuralları vardır.
E-posta alımı sırasında kullanılan iletişim kuralları (protokol),
e-posta gönderimi sırasında kullanılan protokolden farklıdır.
Sırayla bu protokolleri inceleyelim.
SMTP (Simple Mail Transfer Protocol), e-posta
gönderilirken kullanılan protokoldür. İstemcimizle e-posta
gönderirken, bir SMTP sunucusuna bağlandığımızda, SMTP iletişim
kuralları ile haberleşiriz (SMTP sunucusu
kendisine verdiğimiz e-postamızı, alıcı kısmındaki kişiye gönderir).
POP3 (Post Office Protocol 3), istemci tarafından, sunucudan
e-postaların alımı için kullanılan protokoldür. Bu protokolde,
e-postalar, kullanıcı tarafından tamamıyla indirilir ve e-postaların
sunucu tarafındaki kopyaları silinir.
IMAP (
Internet
Message
Access
Protocol), POP3'e alternatif,
e-posta alımında kullanılan gelişmiş bir
protokoldür. POP3'te olduğu gibi, e-postaların okunabilmesi için
tamamının indirilmesi gerekmez. İstemci ilk önce mesaj başlıklarını
sunucudan alır. Kullanıcı bu başlıklara bakarak, herhangi bir e-postayı
seçtiğinde, bu e-postanın tamamı indirilir (Aynı zamanda e-postanın bir
kopyası sunucu tarafında da bulunur).
Belgenin ilerleyen kısımlarında IMAP'in POP3'e göre avantajları ve
dezavantajlarından ayrıca bahsedilecektir.
Kabaca Coruier'ın belli durumlarda nasıl çalıştığını inceleyelim.
- /etc/courier/smtpaccess
dosyasına bakılıp, e-postayı gönderenin IP adresi kontrol edilerek
yetkisi olup olmadığı anlaşılır (SMTP sunucunuza zarar vermeye
çalışanların IP adreslerini bu dosyaya girerek, sunucunuza erişimlerini
engelleyebilirsiniz).
- /etc/courier/esmtpacceptmailfor
dosyasına bakılarak, e-postanın alıcısının alan adı kontrol edilir.
Eğer bu alan adı esmtpacceptmailfor dosyasında
tanımlı ise aşağıdaki adımlara geçilir, tanımlı değilse Courier karşı
tarafa "Relaying Denied" hatası gönderir (Sunucunuz üzerinden
gönderilen e-postaların sadece sizin kullanıcılarınızla alakalı
olduğunu garantiler. Böylelikle sunucunuzu spam gönderme amacıyla
kullanan harici kullanıcılar engellenmiş olur).
- Courier, kullanıcı bilgilerinin tutulduğu yerde (doğrulama
yönteminize göre farklılık gösterebilir), e-posta alıcısının kutusunu
(e-postaların bırakılacağı dizin) araştırır. Eğer böyle bir kullanıcı
bulunamazsa karşı tarafa "User Unknown" hatası gönderilir. Bulunursa
kullanıcının e-posta dizini öğrenilerek, gelen e-posta bu dizine
bırakılır.
- Courier, e-postayı göndermeye çalışan bilgisayarın IP adresini /etc/courier/smtpaccess dosyasına
bakarak kontrol eder. Eğer yetkisi varsa aşağıdaki adımlara geçilir.
- E-postanın gönderici kısmına bakılarak, gönderene, kullanıcı adı
ve parola sorulur (Uygun şekilde yapılandırılmış ise). Kullanıcı adı ve
parola bilgilerini saklamak ve kullanmak için, Courier, bir çok yöntem
kullanabilir (Userdb, LDAP, MySQL, PostgreSQL...).
- Kullanıcı doğrulandıktan sonra, SMTP sunucumuz, bu e-postayı
alıcının SMTP sunucusuna teslim eder.
Süreç, kullanılan e-posta alım protokolüne (IMAP ya da POP3) göre
değişse de kabaca:
- POP3 ya da IMAP sunucusu istemciden kullanıcı adı ve parola ister.
- İstemcinin gönderdiği kullanıcı adı ve parola, Courier'ın
kullanıcı bilgilerini sakladığı kaynakta (Örneğin MySQL tablosunda)
araştırılarak herhangi bir satırla eşleşip eşleşmediğine bakılır.
Eşleşmez ise istemciye kullanıcı adı ve/veya parolanın hatalı olduğu
söylenir.
- Kullanıcı MySQL tablosunda bulunup, parolası doğrulandıktan
sonra, aynı tabloda kullanıcının e-posta dizini (maildir)
araştırılır.
- Kullanıcının e-posta dizinindeki e-postalar (POP3) ya da e-posta
başlıkları (IMAP) istemciye gönderilir.