fli4l için Otomatik ileti

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

UNIX Basics

AuthorImage:[Here we need a little image from you]

Stefan Blechschmidt

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in de Stefan Blechschmidt 

de to tr Ceyhun Elmas 

AboutTheAuthor:[A small biography about the author]

1990 yılında Elektrik Eğitimi sırasında bir CAD işistasyonunun başında bir Şalter tasarlıyordu. Sonrasında sistemine bilinmeyen bir Virüs bulaştı ve gerçekten güçlü bir Virüstü.

Abstract:[Here you write a little summary]

Bir disketlik bir router'ı kim kullanmazki ; http://www.fli4l.de/. Bu problemi herkes bilir, Router bir dial-on-demand olarak ileti sunucusu içeren bir Ağ sisteminde kullanılırsa. Router bir bağlantı yaptığında ileti sunucusu da iletilerini göndermek ve almak için bunu bilmelidir.
Bu yazı bu problemin nasıl çözülebileceğini anlatıyor.

ArticleIllustration:[One image that will end up at the top of the article]

Automail mit fli4l

ArticleBody:[The main part of the article]

Genel yapı hakkında kısa açıklama

Giriş resminde bu yazıdaki genel ağ yapısını şematik olarak kabaca gösteriyor. WS1-3 Router üzerinden WWW 'ye açılan işistasyonlarını temsil ediyor. Service-Host iç ve dış iletilerden sorumlu. Göndermeler MTA tarafından başarılıyor. Gelen iletilerden fetchmail sorumlu ve sonrasında procmail ile sıralanıyor. Service-Host üzerindeki iletikutuları POP3 ya da IMAP üzerinden işistasyonlarına sağlanıyor.

Problem

İşistasyonlarından biri WWW'ye bir bağlantı sağladığında Service-Host normalde bununla ilgilenmez. Bununla birlikte cronjob yardımıyla belirli zamanlarda ileti gönderip alabilir. Ama daha güzeli Service-Host'u bilgilendirmeye bağlantı sağlandığında ileti gönderilmesidir.

Router bir disket üzerinde çalıştığından bu yana ileti sunucusunu Router'dan denetlemek için karmaşık bir betik ya da program bulunmuyor.

Fikir

Service-Host'u bir bağlantı hakkında bilgilendirmek için, bir request oluşturulabilir ve bu request bir işlemi başlatarak bu işlemle ileti gönderilip alınabilir.

Çözüm

fli4l için diskete sığabilecek olan (yaklaşık 100 Kb) wget programı yardımıcı olabilir. wget ile arama ile aynı anda Service-Host'a bağlantı sağlanabilir. Service-Host üzerine inetd ile bir port açılabilir ve bu Router'dan bir bağlantı bekleyebilir. Bağlantı sağlandığında ileti gönderip alabilecek bir betik başlatılabilir.

Betik Perl ile yazılı ve adresinden (mailstart.pl.gz) indirebilirsiniz.

Router düzenlemeleri

Aramada .../opt/etc/ppp/ip-up dosyası çalışmaya başlar. Burası Service-Host'umuza bir bağlantı oluşturmak için doğru yerdir. Bu satır ile :

 wget -t 1 --spider  MAILSERVER:PORT/xyz &> /dev/null

bunu yaparız.

wget komutu

* Parametre -t 1
Bu seçenekle bir İleti sunucusu üzerindeki    mailstart programına erişmeye bir çalışılır.

* Parametre --spider
Bu seçenekle sayfanın varlığı denetlenir ama indirme yapılmaz. 
  

* MAILSERVER:PORT/xyz

Burada İletisunucusu ve Port programa erişeceği yere yönlenir.
xyz indirilecek dosyadır. Bir tanımlama gerekmiyor wget benimsenmiş değer olarak 
index.html ismini kullanacaktır.

* /dev/null
     
   Bu wget'ın çıktısının Nirvana'ya gönderileceği anlamına geliyor.  Burada wget'in hangi dosyayı aldığı görmek 
önemsizdir.

İletisunucu düzenlemeleri

İletisunucusu üzerinde Süpersunucu inetd üzerinden mailstart[1] programı başlatılır. Burada /etc/services ve /etc/inetd.conf dosyalarını düzenlemeliyiz.

/etc/services

Burada wget'in hangi Portu kullancağını belirtmeliyiz.

mailstart  4000/tcp # Mailstart

satırı ile bu sağlanır.

/etc/inetd.conf

Bu dosya içinde hangi programların başlatılacağını tanımlıyoruz. inetd çalışmayı görüntüler ve loglar /var/log/syslog dosyasına yazılır.

mailstart  stream  tcp  nowait  root  /usr/sbin/tcpd  /root/bin/mailstart

bu adım bu satırla tamamlanır. İlk isim /etc/services dosyasındaki ile aynı olmalı.

mailstart.pl düzenlemeleri

Programın değişkenleri sunucuya göre düzenlenir.

$protokoll

$protokoll değişkeniyle çağrılarının log'a yazılıp yazılmayacağını belirleriz. 1 değeri ile çağrı logları /var/log/mailstart.log dosyasına yazılır. Eğer değer 0 olursa log tutulmaz.

Default: 1   log yaz

$protokoll_ziel

Bu değişkenle hedef log'un adresi belirlenir.

Default: /var/log/mailstart.log

$mailholen

Burada ileti ile alınan programlar işlenir. Programı çalıştıran kullanıcı (örneğin root) /etc/inetd.conf dosyasına girilmelidir. Eğer biri programı kullanmak isterse su USER -c \"COMMAND PARAMETER\" komutu kulanılır. Eğer komut bir kaç parça uzunlupundaysa " ile ayrılmalıdır ve \ ile kullanılmalıdır.

Voreinstellung (eine Zeile):
su postmaster -c \"fetchmail -t 40 -a -L /var/log/fetchmail/fetchmail.log -f /home/postmaster/.fetchmailrc\"

$mailsenden

Burası programın ileti gmndereceği yer. Programı başlatan kullanıcı root örneğin, /etc/inetd.conf dosyası içinde yer almalıdır. Eğer biri programı kullanmak isterse su USER -c \"COMMAND PARAMETER\" komutu kulanılır. Eğer komut bir kaç parça uzunlupundaysa " ile ayrılmalıdır ve \ ile kullanılmalıdır.

Default: sendmail -q

Bu arada programın bir parçası küçük bir POD dokumanıdır ve kısa açıklamalar içerir. Bu açıklamaları perdoc mailstart ile görebilirsiniz.

Test

Test'ten önce Süpersunucu yeniden başlatılmaldır. /etc/init.d/inetd restart bunu yapacaktır. Şimdi telnet localhost mailstart ile Sunucunun cevap verip vrmediğini test edebiliriz. Buna benzer bir yanıt almalıyız :

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HTTP/1.1 220 OK
Date: Sun, 20 Jul 2003 10:45:46 GMT
Server: mailstart/perl (sbsbavaria)
Last-Modified: Sun, 20 Jul 2003 10:45:46 GMT
Content-Type: text/txt
Content-Length: 11

1234567890
Connection closed by foreign host.

İşte hepsi bu. Umarım açıklamalrımla istenilen sonucu elde edersiniz. Aksi durumda ortada bir problem var demektir.
- Siz, çünkü çalışmadı.
- Ben, çünkü size yeterli açıklamaları yapamadım :-).

Yükleme

Bağlantılar / Kaynaklar