E-Posta Servisi
SMTP İnternette elektronik posta alışverişinin düzgün bir şekilde yapılabilmesi; bu görevi yürütecek sunucuların ve istemcilerin ortak bir dil konuşmalarını sağlamak amacıyla, SMTP geliştırilmiştir. SMTP, Simple MaiI Transfer Protocol kelimelerinin ilk harflerinden oluşmuş bir kısaltmadır. E-posta servisinin sunucu-istemci mimarisinde çalışmasını sağlayan MTA, MUA, LDA gibi programlar vardır. Bunlardan en önemlisi olan MTA (Mali Transfer Agent) tüm e-posta sunucularında çalışması gereken sunucu programıdır. MUA(Mail User Agent) ise İstemci makinelerde çalışan, kullanıcıların e-posta okumak yada göndermek için kullandıkları programlardır. En çok kullanılan MUA pragramlarından bazıları Microsoft Outlook, Outlook Espress, Eudora, Evolution ve Pinedır. Kullanıcılar e-posta gönderecekleri zaman kullandıkları MUA programı, yapılan ayarda belirtilen MTA ile TCP/25 port üzerinden bağlanır. MTA ile MUA arasındaki haberleşme SMTP protokolü tarafından belirlenmış komutlar ve cevaplar ile sağlanır. E-posta bir sonraki hedefine ulaşmak üzere MTA’ya gider. MTA bu e-postayı aldıktan sonra hedef e-posta adresinin kendi üzerinde (yerelde) tanımlı olup olmadığına bakar. Hedef e-posta dresinin yerel tanımlı olması durumunda, e-posta yerel dağıtım programına (LDA) iletilir. LDA (Local Delivery Agent) e-postayı sistemde ilgili yere (hedef e-posta adresine sahip kullanıcının posta kutusuna) yazar. Eğer hedef e-posta adresi yerelde tanımlı değilse MTA haberleşmesi gereken sunucusu bulur ve uzaktaki MTA ile SMTP protokolü üzerinden konuşarak e-postanın hedef sunucuya iletilmesini sağlar.
DNS E-Posta İlişkisi Mail exchanger (MX) kayıtları belirli bir domain için e-posta kabul eden sunucuları gösterirler. Bu sunucular e-postayı hedef adrese dağıtan yada yönlendiren (virus/spam flltreleme) sunucular olabilirler. MTA’lar, kendilerine iletilen e-postaların alıcıları kendi üzerlerinde (yerelde) tanımlı değilse ilgili domain ıçin MX sorgusu yaparlar ve haberleşerek, e-postayı iletmesi gereken sunucuyu bulurlar. Benzer şekilde diğer sunucuların kendisini bulabilmeleri için A ve PTR kayıtlarının yanısıra MX kayıtları da olmalıdır. Yapılan MX kayıtlarındaki öncelik değerli e-posta servisinin sürekliliğini ve yük paylaşımlı çalışmasını sağlayacak şekilde ayarlanabilir. Öncelik değeri düşük MX kaydına sahip sunucu e-postayı ilk kabul edecek sunucudur, öncelik değeri daha yüksek olan sunucu ise diğer sunucunun servis veremediği durumlarda yedek sunucu olarak e-postaları kabul edecektir. Farklı bir yaklaşımla eşit öncelik değerine sahip sunucular e-posta trafiğini paylaşırlar.
Linux’ta E-Posta Servisi Linux işletim sistemi üzerinde çalışabilecek temel MTA programları Sendmail, Qmail, Exim, Postfix ve LDA programları ise Procmail ve Maildrop’tur. Red Hat ve Fedora Linux Dağıtımları ile gelen MTA programları Sendmail ve Postfıs, LDA programı ise procmail’dlr. Sendmall programı ilk olarak Eric Ailman tarafından Berkeley Üniversitesinde geliştirilmiştir. İlk olarak delivermail isimi ile birlikte ve ARPAnet üzerinde çalışacak şekilde tasarlanmıştır. TCP protokolünün ortaya çikması ve bir ağ üzerinde bulunabilecek sistem sayısındaki inanılmaz artış sonrası SMTP protokolünün de tasarlanmasıyla beraber sendmail programı yazılmıştır. E-posta servisi verecek bir sunucuda sendmail ve procmail programlarının kurulu olması gerekir.
Sendmail Kurulum Sendmail kaynak kodundan kurulabileceği gibi Fedora dağıtımı ile birlitkte gelen rpmler kullanılarak da kurulabilir. Sendmail servisini kullanabilmemiz için temel olarak sendmail ve procmail rpmlerinin kurulu olması gereklidir. Fedora Core 4 ile gelen sendmail sürümü sendmail-8,13,4-2, procmail sürümu procmail-3.22-16dir.
Sendmail Yapılandırma Sendmail paketi birçok parçadan oluşur. Paket kurulduktan sonra sistemde yeni programlar, dosyalar, dizinler ve servisler oluşur. Sendmail’in temelini yapılandırma dosyası oluşturur ve bu dosya sayesinde işlemler gerçekleşir. Temel yapılandırma dosyası /etc/mail/sendmail.cf dir. Bunun yanında birçok ek dosya ile çeşitli yapılandırmalar yapdabillr.
sendmail.cf ve sendmail.mc sendmail.cf yapılandırma dosyasında iki şekilde değişiklik yapılabilir. İlk yol bu dosyaya üstünde gerekli değişikliği dosyayı açıp içinde gerekli değişikliği yapmaktır. İkinci yöntem sendmail.cf dosyasını sendmail.mc dosyasından üretmektir. Bu dosyadan sendmail.cf üretmek için dosyanın bulunduğu dizin olan /etc/mail dizininde make komutunu yürütmek yeterlidir. “make” komutu ile sendmail.cf dosyasının oluşturulabilmesi için sendmail-cf paketinin kurulu olması gereklidir. Eğer kurulu değilse aşağıdaki gibi uyarı mesajı alınır. [root@localhost mail]# make WARNİNG: ‘sendmail.mc’ is modified. Please install package sendmail-cf to update your configuration. Fedora Core 4 ile gelen sendmail-cf sürümü sendmail-cf -8.13.4-2’dür. [root@localhost sendmail]# rpm –ivh sendmail-cf-8.13.4-2.1386.rpm Preparing... ###################################### (1004) 1:sendmail-cf ###################################### (1004)
sendmail.cf ve sendmail.mc /etc/maii/sendmail.mc dosyası macro formatında yapılandırma dosyasıdır. Sendmail.cf dosyası oluşturulurken M4 işleyicisi sendmail.mc dosyasını işleyerek sendmail.cf’yi oluşturur. Dosyanın macro formatında olmasının bir çok avantajı vardır. Sendmailin yeni versiyonlarının çıkmasıyla birlikte sendmaile yeni özellikler gelir. Buna paralel olarak da sendmail.cf’nin yapısı değişir. Sendmail’in güncellenmesinden sonra eski sendmail.cf yeni versiyonda çalışmayabilir, Ancak make komutu ile sendmail.mc ile tekrar sendmail.cf dosyasının oluşturulması yeniden yapılandırma yapmaktan kurtarır. Aynı sendmail.mc dosyasında farklı sistemlere uygun sendmail.cf oluşturulabilir. Örneğin aynı sendmail.mc dosyası hem Fedora, hem HP-UX hem de Solaris’de işletim sisteminde çalışan sendmail’de kullanılabilir. Bu platformlarda sendmail.cf yeniden oluşturulduğunda farklılıklar olduğu rahatlıkla görülebilir. Gerekli yapılandırma sendmail.cf dosyasında elle değişiklik yaparak oluşturuluyorsa sistem yöneticisinin make komutunun kullanılması sendmail.cf’nin yeniden oluşturulmasına ve yapılan değişikliklerin kaybolmasına neden olacaktır.
Sendmail Yapılandırma Sendmail sunucusu varsayılan yapılandırmada sadece kendi üstünden gelen istekleri yanıtlar ve sadece loopback adresi (127.0.0.1) dinler. [root@localhost ~]# netstat -atn|grep 35 tcp 0 0127.0.0.1:5335 0.0.0.0:* LİSTEN İnternet üstünden gelen postaları da kabul edebilmesi için yapılandırmada aşağıdaki değişiklik yapılmalıdır. Sendmail.mc’de aşağıdaki değişiklik yapılmalıdır. Önce → DAEMON_OPTIONS(` Port=smtp,Addr=127.0.0.1,Name=MTA`) Sonra → DAEMON_OPTIONS(` Port=smtp,Name=MTA`) sendmail.cf dosyasının yeniden oluşturulmasından sonra sendmail.cf’de aşağıdaki alan da değişecektir. Önce → O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA Sonra → O DaemonPortOptıons= Port=smtp, Name=MTA
Sendmail Yapılandırma Sendmail’in çalışma mantığında gelen e-postalar öncelikle kuyruğa alınır. Daha sonra kuyruktaki e-postalar işlenerek bunların hedefe ulaşması sağlanır. Eğer e-postanın gideceği sunucu servis dışı olduğunda e-posta kuyrukta beklemeye devam eder. Sunucunun yükünün arttığı durumlarda, kapalı olduğu yada bağlantı isteklerini geri çevirdiği durumlarda e-posta kuyrukta bekler. Kuyrukta bekleyen e-postalar belirli aralıklarla tekrar gönderilmeye çalışılırlar, tekrar deneme süresi /etc/sysconfig/sendmail dosyasında QUEUE ile belirtilir. [root@localhost ~]#cat /etc/sysconfig/sendmail|grep QUEUE QUEUE=1h Varsayılan değeri 1 saattir, bu değer istenilen şekilde değiştirilebllir. Örneğin 20 dakika yapmak için bu değeri 20m yapıp, servisi yeniden başlatmak yeterlidir.
Sendmail Yapılandırma Sendmail belli bir süre bu postayı göndermeyi denedikten sonra hala e-postayı gönderemediyse kullanıcıya e-postayı gönderemediğini bildiren ve ne kadar daha süre daha göndermeye çalışacağını bildiren bir e-posta yollar. Varsayılan olarak 4 saat sonunda kullanıcıya uyan mesajı yollanır ve 5 gün boyunca posta yollanmaya çalışılır. Kullanıcıya uyarı mesajı yollanması için beklenen sürenin 4 saatten daha küçük bir değere çeklimesi yararlı olacaktır.Bu değerler sendmail.mc’de aşağıdaki satırlarda belirtillr. dnl define(‘confTO_QUEUEWARN’ , ‘4h’) dnl dnl define(‘confTO_QUEUERETURN’ , ‘5d’) dnl sendmail.cf de aşağıdaki satırlarla bu değerler belirtilir. O Timeout, queuereturn=5d O Timeout, queuewarn=4h Kuyrukta bekleyen e-postaları görmek için mailq veya sendmail —bp komutu kullanılabilir.
/etc/maiI/local-host-names Sendmail’in kabul edeceği e-posta domainleri /etc/mail/local-host-names dosyasında belirtilir. Dosyadaki domainleri sendmail üstünde tuttuğunu anlayarak, bu domainlere gelen mailleri üstüne alır. Bu dosyanın kullanılabiliyor olması için sendmail.mc aşağıdaki satırın bulunması gerekir. FEATURE(‘use_cw_file’) Standart yapılandırmada bu satır ekli olarak gelir. Bu özellik ile sendmail.cf dosyasında aşağıdaki satır üretilmiş olur. Fw/etc/mail/local-host-names local-host-names dosyası kullanılmadan da bu yapdandırma yapılabilir. Bunun için sendmail.cf dosyasında LOCAL_DOMAIN deyimi kullanılabilir. LOCOL_DOMAIN(‘myo.fatih.edu.tr’) LOCOL_DOMAIN(‘lab3.fatih.edu.tr’)
Alias’lar Alias işlemi alıcının adresini bir veya birden fazla alıcı adresiyle değiştirme işlemidir. Alıcı adresi olarak bir kullanıcı, birden fazla kullanıcı içeren bir liste, bir program, bir dosya veya bunların karışık olarak kullanımı olabilir. Aliaslar ile - bir kullanıcıya birden fazla adresten e-posta gelmesi - tek bir adresten birden fazla kullanıcıya e-posta iletimi - e-postaları dosyalara eklemeyi e-postaların programlar veya scriptlerle filtrelenmesi sağ lanabilir. Varsayılan alias dosya yolu /etc/aliases’dır. Bu dosyanın yerini değiştirmek için sendmailmc’de define (‘ALIAS_FILE’, /ets/aliases’) dnl değiştirilebilir. sendmail.cf dosyanın yeniden oluşturulmasından sonra sendmail.cf’de aşağıdaki alan da değişecektir. # location of aliasfile O AliasFile=/etc/aliases
Alias’lar (2) Alias dosyasının yapısında her satırda bir alias bulunur. Eğer satırın başında boşluk veya tab varsa o satır üst satır ile birleşik sayılır. Eğer satır başında # işareti varsa o satır göz ardı edilir. Bir alias satırı aşağıdaki gibidir. Yerel: alias Her satırının “#” işaretinden önceki kısmı yereldeki adresi belirtir, “#” işaretinden sonraki kısım bu yerel adrese gelen e-postanın kime dağılacağını belirtir. Eğer satırda “:” işareti olmazsa hata loglarda hata mesajı alınacak ve bu satır göz ardı edilecektir. root:gulshat, admin@fatih.edu.tr Yukardaki aliasda root’a gelen e-postalar yereldeki gulshat ku lanıcısına ayrıca da admin@fatih.edu.tr adresine yollanacaktır. Böylece her iki adrese de e-posta göndermek yerine tek bir adrese göndererek 3 kullanıcıya da postanın iletilmesi sağlanmış olur. Varsayılan yapılandırmada yerel kullanıcılar dışında bir adrese yönlendirme yapılamıyor. Bu özellik için sendmail.mc’ye aşağıdaki satır eklenmeli ve sendmail.cf oluşturulmalıdır. MODIFY_MAILER_FLAGS(‘smtp’, ‘+A’)
Alias’lar (3) Alias dosyasında 4 farklı tip alias tanımlanabilir. LHS: kullanıcı LHS: /file LHS: |program LHS: :include: liste_yolu user : e-postanın ulaştırılacağı adrestir. Bu adres yerelde veya dışarıda bir adres olabilir. /fiIe : e-postanın ekleneceğl dosyayı belirtir. Bu durumda belirtilen dosyanın sonuna gelen posta eklenir. |program: e-postanın yönlendirileceği programı belirtir. Gelen posta | işareti ile belirtilen programla işlenir. Programa yönlendirilen aliaslarda dikkatli olmak gereklidir, dikkatsiz yapılan yönlendirmeler güvenlik açıklarına neden olabilir. :include: e-postanın yönlendirileceği listeyi belirtir. Liste_yolu alanı listenin bulunduğu yolu belirtir. Bu yoldaki dosyada alıcıların adresleri “,” ile belirtilmiş bir şekilde bulunmalıdır.
Alias’lar (4) Alias dosyasının her posta geldiğinde okunması servisi ciddi şekilde yavaşlatacağı için sendmail alias dosyasının yerine alias veritabanını kullanır. Alias dosyası değiştirildikten sonra bu veritabanı tekrar oluşturulmalıdır. Bu işlem aşağıdaki newaliases veya sendmail -bi komutlardan birini kullanarak yapılabilir. [root@localhost ~]# newaliases /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total Alias dosyasında hata olması durumunda alias veritabanı oluşturulurken uyarı alınacaktır.
.forward .forward dosyası kullanıcının kendisine gelen e-postaya uugulanacak işlemi belirler. .forward dosyası kullanıcının ev dizininde bulunmalıdır. Bu dosya ile gelen postayı başka bir adrese, bir dosyaya yada bir programa yonlendirebilir. [gulshat@localhost gulshat]$ cat .forward \esat /users/home/gulshat/postayedek shad_kul@gmail.com Yukardaki .forward dosyasırıın ilk satırında gelen postanın yereldeki esat kullancısının posta kutusuna yönlendirilmesi sağlanıyor. İkinci satır ile postayedek dosyasına postanın bir kopyasının yazılmasını sağlıyor son satır ise postanın bir kopyasının shad_kul@gmail.com adresine yollanmasını sağlıyor.
Masquerading Sendmail sunucusu üstünden gönderilen e-postaların sonuna kendi isimlerini eklerler. Masquarading işlemi ile gönderilen postaların sonuna sunucu isminin yerine domain isminin eklenmesi sağlanır. Örneğin: mail.fatih.edu.tr isimli bir sunucu üstünden gulshat kullnıcısı e-posta yolladığında e-postanın gönderen kısmında gulshat@mail.fatih.itu.edu.tr adresi görünür. Gönderen domain ismini değiştirmek için sendmail.mc’ge aşağıdaki gibi MASQUARDE tanımı yapılabilir. MASQUERADE_AS (‘fatih.edu.tr’) dnl