Home Index Search Links About Us
  News   Archives   Companies   Tips  

Procmail ile Posta Y�netimi

Yazar: Angel Lopez

�eviri: Emre Demiralp


Kurulum

Temel Fonksiyonlar

Bi�imlendirme

Postalama Dizelgeleri

Postay� Yan�tlama

Sonsuz D�ng�ler

Dosyalar�n ��z�mlenmesi

Sonu�

Conclusion

Kurulum

�lk ad�m procmail'in enson s�r�m�n�n elde edilmesidir. Bu yaz�n�n yaz�m�na ba�land���nda son s�r�m 3.11pre7 idi.

Program i�in kaynak yaz�l�m�n elde edilmesinden sonra, kurulum i�in, onun gev�etilmesi ve ��k�ndan ��kar�lmas� gerekecektir. Bu ama� i�in verilecek g�d�m tar -xzvf procmail.tar.gz olmal�d�r

Bunu izleyen a�ama Makefile ve config.h dosyalar�n�n eldenge�irilmesidir. Bu yaz�n�n yaln�zca bir giri� olmas�ndan dolay� ve bu ilk giri�te nesneleri basit tutmak amac�yla, bu dosyalar�n bi�imlendirme se�eneklerini a��klamayaca��z. �lgilenen okuyucu elyordam sayfalar�na ve kaynaklarla birlikte sunulan kaynakland�rmalara ba�vurabilir.

Yine de hi� olmazsa Makefile dosyas�nda BASENAME se�ene�inin varl���ndan s�zetmek yerinde olacakt�r. Bu se�enekle procmail'in kurulaca�� taban dizini g�sterebiliriz. Taban dizin ad�ndan, g�sterdi�imiz dizin bin ve man gibi dizinleri ask�ya alacakt�r.

Sonunda, ��k�n� derlemek i�in make install g�d�m�n�n verilmesi gerekir.

Procmail t�m sistem i�in y�klenip sendmail(8)'in baz� kurallar�yla �a�r�labilece�i gibi baz� kullan�c�lar�n kendi kullan�mlar� i�in de devreye sokulabilirler. �kinci durumda kullan�c� procmail kullan�m�n� kendisinin .forward dosyas�nda, a�a��daki bi�imde bir sat�rla belirtilecektir:

|IFS=' ' && exec /home/juan/procmail/bin/procmail -f- || exit 75 #juan

Bu sat�rda juan adl� kullan�c�n�n procmail'i kendi HOME �evresel de�i�keniyle belirtilen dizinine kurdu�unu varsaymaktay�m. Bu �zel sat�r i�in, derleme s�ras�nda belirtilecek olan BASENAME, /home/juan/procmail'd�r.

Temel Fonksiyonlar

Procmail standart giri� veriyolundan bilgi okur. O, kullan�c�n�n kendi HOME adresinde bulunmas� gereken ve bir bi�imlendirme dosyas� olan .procmailrc adl� dosyaya bakar. Bu dosya, procmail'e bir mesaj�n okunmas�ndan sonra ne yapaca��n� s�yleyen baz� kurallar tan�mlar. O, mesaj�n saklanmas�, g�zard� edilmesi, kendili�inden yan�tlanmas�, vs.. gibi konularda karar verebilmek i�in mesaj ba�l���nda baz� katarlar� kontrol etmek �zere y�nlendirilebilir.

Procmail, gelen ya da bir dosyada depolanan posta ile otomatik olarak ilgilenmemize izin verir.

Bi�imlendirme

Kullan�lan bi�imlendirme dosyas� .procmailrc olup HOME i�ine yerle�tirilmeldir.

# ile ba�layan her sat�r bilgilendirme ama�l� olup eylem ger�ekle�tirme niteli�i yoktur.

:0 veya :0: ile ba�layan sat�rlar, procmail'e bir mesajla ne yapaca��n� s�yleyen yeni bir kural�n ba�lang�c�n� g�sterirler.

* ile ba�layan sat�rlar bir kural�n uygulanmas� i�in sa�lanmas� gereken bir ko�ulu g�sterirler. Bu, procmail'in hangi mesajlar�n kurala g�re i�lenmesi gerekti�ini saptamak i�in kulland��� d�zenektir.

Geriye kalan, yani, :, veya * ile ba�lamayanlar g�d�m olarak nitelendirilirler. Di�er bir deyi�le, ko�ulu sa�layan mesaja procmail taraf�ndan uygulanacak eylemi nitelendirirler. Baz� olas� eylem ya da g�d�mler aras�nda, bir mesaj�n silinmesi, mesaj y�nlendirimi, mesaj�n saklanmas�ndan s�zedilebilir.

Bir .procmailrc dosyas�nda g�sterilmesi gereken ilk �eyler �evresel de�i�kenlerdir. Size ait .procmailrc dosyas�nda tan�mlaman�z� sal�k verebilece�im de�i�kenlerden baz�lar� a�a��da sunulmaktad�r.

MAILDIR
Procmail'in posta mesajl� dosyalar� saklayaca�� dizini g�sterir. Bu de�i�ken genellikle $HOME/mail ya da $HOME/Mail'e y�nlendirme yapar. Bunlardan hangisinin ge�erli olaca�� kullan�lan posta okuyucusuna ba�l�d�r.

LOGFILE
Procmail'in, ger�ekle�tirilen haberle�melerin t�m�yle ilgili kay�tlar�n tutuldu�u kay�t dosyas�n�n ad�n� belirtir.

SENDMAIL
Otomatik olarak mesaj yan�tlamada kullan�lacak olan sendmail'in nerede bulunaca��n� belirtir.

FORMAIL
formail'in nerede bulunaca��n� g�sterir. Bu program, procmail ile birlikte da��t�l�r ve amac� posta ba�l�klar�n� yeniden d�zenlemek ya da bir mesaj� g�nderim veya depolama �ncesinde yeniden bi�imlendirmektir.

DEFAULT
Tan�mlanan kurallardan herhangi birinin procmail taraf�ndan uygulanamamas� durumunda bir mesaj�n sakland��� dosyad�r.

�evresel de�i�kenler, .procmailrc i�inde herhangi bir yerde tan�mlanabilirler. E�er bir de�i�ken = simgesini izleyen bir de�erle birlikte g�z�km�yorsa, devre d��� b�rak�l�r.

Kurallar iki grupta toplanabilirler: Eylemlerinin uygulanmas� sonras�nda mesaj g�nderimine yola�anlar ve yola�mayanlar.

�lk gruptaki kurallar basittir. Onlar�n eylemlerinin ger�ekle�tirilmesi sonras�nda bu mesaja ba�ka bir kural�n uygulanmayaca�� varsay�l�r ve b�ylece mesaj g�nderilir.

Mesaj�n g�nderilmedi�ini varsayan ikinci grup kurallar�n kullan�lmalar� �ok yararl�d�r. Bu durum, mesaja g�nderim �ncesinde, �zelikle �ok say�da kural�n uygulanmas� ya da eylemin ger�ekle�tirilmesi istendi�inde �nem kazan�r.

Bir kural yaz�m� i�in genel yap� a�a��daki gibidir:

           :0 [options] [ : [exclusion file] ]
           * condition 1
           * condition 2
                 .
                 .
                 .
           * condition N
           command
           

�imdi bu yap�y� par�a par�a ��z�mleyelim. Her kural :0 ile ba�lamal�d�r. Kural� a�a��daki se�eneklerden herhangi biri izleyebilir:

H Ko�ul posta ba�l���na uygulan�r.
B Ko�ul mesaj g�vdesi i�inde aran�r.
D Ko�ul soru�turuldu�unda k���k ve b�y�k harfler ay�rdedilebilir olarak nitelenecektir.
A Bu kural, bir �nceki uyguland���nda uygulanacakt�r.
a A'ya benzer, ama bir �nceki kural yan�lg�s�z uygulanm�� olmal�d�r.
E Bu kural, bir �nceki kural uygulanmad���nda �al��t�r�lacakt�r.
e Bu kural, bir �nceki kural�n �al��t�r�lm�� oldu�u ama bir yan�lg� belirterek devre d��� kald��� durumlarda �al��t�r�lacakt�r.
h Mesaj ba�l��� g�d�me aktar�l�r.
b Mesaj g�vdesi g�d�me aktar�l�r.
f G�d�m bir s�zge� olarak yorumlan�r.
c Mesaj�n bir karbon kopyas�n�, cc, olu�turur. Mesaj� g�nderimiyle ilgili bir kural�n bu se�enekle �al��t�r�lmas� durumunda g�nderimle ilgili bir i�lev yerine getirilir daha sonra di�er kurallar mesaj�n karbon kopyas�na uygulanabilir.
w G�d�m�n �al��mas�n�, g�d�m ��k�� d�zg�s�n� alana dek bekler.
W �nceki se�enek gibidir ama yan�lg� durumunda herhangi bir ileti yay�nlamaz.
i Olas� yaz�m yanl��lar�n� g�zard� eder.
r �letiyi oldu�u gibi yazar. Onun sonunun bo� bir sat�rla bitip bitmedi�ini s�namaz.

E�er herhangi bir se�enek verilmeyecek olursa, benimsenen e�ilim, ko�ulun posta ba�l��� �zerinde s�nanmas�d�r (se�enek H ). G�d�m, standart giri� veriyolundan, iletinin hem ba�l���n� hem de g�desini al�r (se�enek h ve b ). Bu durumda b�y�k ve k���k harf ay�r�m� yoktur.

:0'den ve olas� se�eneklerden sonra, ikinci bir : gelebilir. Bu durumda iletinin yaz�laca�� dosyan�n iki s�re� taraf�ndan ayn� anda dosyaya yaz�m� engellemek amac�yla dosya kilitlenmelidir. Kilit olarak kullan�lacak dosya, istenirse, kullan�c� taraf�ndan belirlenebilir.

Daha sonra ko�ullar, her sat�ra bir tane olacak ve ko�ul �ncesinde * karakteri kullan�lacak bi�imde verilir. Bir iletinin ba�l�k ya da g�vdesinde bi katar� bulabilmek i�in ko�ullar genellikle d�zg�n deyimler olarak yaz�l�rlar. D�zg�n deyimler di�erlerinin aras�nda a�a��daki simgeleri kullan�rlar:

^ Sat�rba��.
$ Sat�rsonu.
. Sat�rba��nad�n�� d���nda herhangi bir simge
* S�f�r ya da daha �ok kez.
+ Bir ya da daha �ok kez.
? S�f�r ya da daha �ok kez.
[a-z] Simge b�lgesi, bu �rnekte a dan z ye.
[^a-z]a dan z ye b�lgesi d���nda herhangi bir simge.
a|b 'a' ya da 'b'

Ko�ullardan sonra tek bir g�d�m gelir. E�er g�d�m�n ilk simgesi a�a��dakilerden birisiyse o zaman �zel bir davran�� sergilenir:

! �leti belirtilen posta adreslerinin t�m�ne birer birer y�nlendirilir.
| E�er bu simge bir �al��t�r�labilen taraf�ndan izlenirse, ko�ulun sa�lanmas� durumunda bu �al��t�r�labilen ko�ulur. Simgeyi hi�bir �eyin izlememesi durumunda iletinin tam metni standart ��k�� veriyoluna g�nderilir. Simgeyi bir de�i�ken ad� izleyecek olursa o zaman da belirtilen g�d�m�n sonucu bu de�i�kende saklan�r.

Postalama Dizelgeleri

Procmail'in �ok yararl� olabildi�i yerlerden biri de postam�z�n i�letimidir. �� farkl� Linux postalama dizelgesinin s�rd�r�mc�s� oldu�umuzu varsayal�m. Her bir dizelge orijinin adresiyle kimliklendirilir. S�zgelimi, a�a��daki adreslere sahip oldu�umuzu varsayal�m

           [email protected]
           [email protected]
           [email protected]
         

Ola�an durumlarda bu postalama dizelgelerinden gelen iletiler ayn� posta kutusuna birlikte ula��rlar ve bir�ey yap�lmayacak olursa karma��k bir halde al�konulurlar. Dolay�s�yla, postalar�n geldik�e s�n�flanmas� ve uygun dosyalarda saklanmas� i�leri kolayla�t�racakt�r.

Procmail bu sorunu kolayl�kla ��zebilir. Bu ama�la, .procmailrc adl� dosyay�, a�a��daki basit kurallarla, kullanarak bir Linux postalama dizelgesinden gelen postalar�m�z� s�n�fland�rabiliriz:

:0
* ^From.*[email protected]
l-linux

:0
* ^From.*[email protected]
linux-mx

:0
* ^From.*[email protected]
linux-security

Kurallardan birini dikkatlice inceleyelim. E�er bir kural�n i� �al��mas�n� anlayabilirsek gerisini anlamak daha kolay hale gelir. ��nk�, temel d�zenek daima ayn�d�r.

�lk �nce yeni bir kural�n ba�lad���n� belirten :0 katar� aran�p bulunur. Ba�ka se�enek bulunmad���ndan procmail bu kural i�in benimsenmi� se�eneklerini alacakt�r: b�y�k ve k���k harfler ay�rdedilebilir olacak, ko�ul yaln�zca posta ba�l���na uygulanacak, g�d�m hem ba�l�k hem de iletinin g�vdesini alacakt�r.

�zleyen sat�rda ko�ul aran�p bulunur. �nceden s�zedildi�i gibi bu daima ger�ekle�tirilebilir, ��nk� ilk simgesi * dir. Ko�ul ise a�a��daki d�zg�n ifadedir:

^From.*[email protected]

^From altkatar� procmail'e From altkatar�yla ba�layan sat�rlar�n saptanmas� gerekti�ini s�yler.

Daha sonra gelen .* karakteri, herhangi bir say�da karakter anlam�na gelir. Daha �nceden g�rd���m�z �zere, bir d�zenli ifadedeki "." simgesi herhangi bir karaktere e�de�er olup * s�f�r ya da daha �ok anlam�na gelir. Dolay�s�yla, .*, From den sonra s�f�r ya da daha �ok karakter bulunabilir.

Bundan sonra da, mesaj�n geldi�i yerin adresi olan [email protected] gelir.

D�zenli ifadeler hakk�nda bir par�a daha d���nerek, a�a��daki sat�rlar bu kuralla tan�nacakt�r.:

From: [email protected]
From:[email protected]
FROM [email protected]

Bu kuralla bu adresten ve ba�ka yerlerden gelen mesajlar ay�rdedilebilir. Bu durumda elde olan mesajla ne yapaca��z?.

�zleyen sat�r g�d�m(ya da eylem) olup mesajla ne yap�laca��n� g�sterir. Bu durumda, mesaj, saklanaca�� yer olan linux-mx adl� dosyaya g�nderilir. Dosyan�n a��k eri�imyolunun belirtilmedi�i durumlarda, $MAILDIR �evresel de�i�keninin belirtti�i eri�imyolu kullan�l�r.

Farkl� dizelgelerden ula�an iletiler, k�kenlerine g�re (alandan), �e�itli dosyalara da��t�l�rlar.

�zdevimli Yan�tlama

Procmail'in yararl� olabilece�i di�er bir durum da �zdevimli (kendili�inden) yan�tlamad�r. S�zgelimi, toplumsal OEG anahtar�n�z�, e-posta ile istemi� bulunan herkese g�ndermek istemeniz durumunda, procmail'in ne kadar etkin oldu�u ortaya ��kacakt�r.

Bu ama�la, OEG toplumsal anahtar�m�z i�in bir dilek�e gibi d���n�lebilecek ve konusu i�inde *PGP katar� bulunan bir kural g�ndeme getirilebilir. B�yle bir kural a�a��daki bi�imde yaz�labilir:

0:
* ^Subject.*PGP
| (formail -r ; cat $HOME/key.asc) | sendmail -t

Ayn� d���nce, tatile gitti�imizi ve onlardan gelebilecek e-posta iletilerini tatil d�n��� yan�tlayaca��m�z� ileti sahiplerine bildirmeye y�nelik bir program yazmam�z durumuna da uygulanabilir:

0:
| (formail -r; cat $HOME/vacations.txt) | sendmail -t

Son durumda, t�m iletilerin ayn� not i�ererek g�nderilmesinden dolay� bir ko�ul bulunmamaktad�r.

�zdevimli Yan�tlamalarda Sonsuz D�ng�lerden Ka��nma

�nceki �rneklerde postan�n �zdevimli (kendili�inden) yan�tlanmas� durumunda ortaya ��kabilen sonsuz d�ng�lerden ka��nmak i�in herhangi bir �aba g�sterilmemi�tir.

K�keni kendi E-posta adresimiz olan bir ileti durumunda program o adrese yan�tlama yapacak ve yan�t bize d�necektir. Bu ileti bir kez daha yan�tlanacak ve bu s�re� bir sonsuz d�ng�ye d�n��ecektir. Bu durumdan ka��nmak i�in ba�l��a iletinin yan�tlanm�� durumda bulundu�unu belirten bir sat�r daha eklenmelidir. Bu do�rultuda, formail'in -A se�ene�i kullan�labilir:

formail -r -A"X-Loop: [email protected]"

Bu durumda [email protected] sizin kendi e-posta adresiniz olacakt�r. B�ylece, yan�tlama i�in ba�l�k olu�turulurken, ileride yeni nir kuralla s�nanabilmek i�in X-Loop sat�r� eklenir:

:0
* !^X-Loop: [email protected]
| (formail -r -A"X-Loop: [email protected]" ; 
    cat $HOME/vacation.txt) | sendmail -t

Bu kural sonsuz bir d�ng� olu�mas�n� engelleyecektir. ��nk�, ba�l�kta X-Loop sat�r� i�eren bir ileti ko�ulu sa�lamayacak ve sonu�ta procmail taraf�ndan yan�tlanmayacakt�r.

Dosyalar�n ��z�mlenmesi

.procmailrc'miz i�in Bir di�er ilgin� kural da uuencode(1) ile gizyaz�lanm�� olan gelen iletinin kendili�inden ��z�mlenmesidir. Kural s�yle verilebilir.:

:0 B
* ^begin 644 .*
{
	MAILDIR=$HOME/files
	
	:0
	| uudecode
}

Burada B se�ne�inin kullan�m�yla kural�n ko�ulunun yaln�zca ileti g�vdesi �zerinde s�nanmas� sa�lanm�� olmaktad�r.

E�er kural "begin 644" katar�yla ba�layan bir sat�r bulursa, bunun anlam� uuencode(1) ile gizyaz�lanm�� bir dosyan�n ba�lang�c� bulunmu� demektir.Bu durumda, MAILDIR, �evresel de�i�keninin devreye sokulmas�, ya da di�er bir deyi�le bu de�i�ken taraf�ndan g�sterilen dizine ge�ilme s�zkonusu olur. O andan ba�layarak, t�m bas�m ya da g�sterim eylemleri g�sterilen taban dizini alarak ger�ekle�tirilecektir.Bizim durumumuzda al�nan iletilerin $HOME/files dizininde saklanmas� s�z konusu olacakt�r..

Bunun ard�nda ko�ulsuz bir kural varolup iletiyi ��z�mlemek amac�yla uudecode(1)'ye borular. �zg�n dosya $HOME/files dizinine gidecektir.

Sonu�

Bu k�sa giri�ten sonra, procmail'in �ok yetenekli oldu�u ve postan�z�n i�letimini kolay ve etkin olarak yapabilmenize yard�mc� olaca�� a��k bir bi�imde g�zler �n�nen serilmi� bulunmaktad�r. D�zenli ifadeler ve kurallarla deneyler yapman�z� ve bunlar� gereksinimlerinize uyarlaman�z� �nermekteyim. B�ylelikle, bu k�sa giri� yaz�s�nda de�inemedi�im ve daha ileri d�zeylere giden procmail olanaklar� �ok daha ilgin� olanaklar sunabilecektir.


Daha �ok bilgi i�in:
© 1998 Angel Lopez
Bu sanal y�renin bak�m� Miguel A Sepulveda taraf�ndan yap�lmaktad�r.