Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen gurgitate-mail komutudur.
Program:
ADI
gurgitate-mail - kullanımı kolay bir posta filtresi
SİNOPSİS
gurgitate-posta
TANIM
"gurgitate-mail" mailinizi okuyan ve ona göre filtreleyen bir programdır.
.gurgitate-rules.rb ana dizininizdeki dosya. Yapılandırma dosyası Ruby sözdizimini kullanır
ve bu nedenle oldukça esnektir.
Genellikle sizin aracılığınızla çağrılır. .ileri Dosya:
"|/path/to/gurgitate-mail"
ya da senin aracılığıyla .procmailrc Dosya:
: 0:
| /yol/to/gurgitate-posta
Alternatif olarak, sitenizde sistem yöneticisi iseniz veya sistem yöneticiniz arkadaş canlısıysa, şunları yapabilirsiniz:
gurgitate-mail'i yerel dağıtım aracısı olarak kullanın. Postfix için
mailbox_command=/opt/bin/gurgitate-mail
in /etc/postfix/main.cf. Başka bir MTA kullanıyorsanız ve gurgitate-mail'i
yerel teslimat acentesi, lütfen bana nasıl olduğunu söyle! Bunu belgelere dahil etmek istiyorum.
YAPILANDIRMA DOSYALAR
Gurgitate-mail tarafından kullanılan üç yapılandırma dosyası vardır: ikisi sistem genelindedir ve
üçüncüsü, kullanıcı kuralları dosyasıdır.
Sistem genelindeki iki yapılandırma dosyası /etc/gurgitate-kuralları ve
/etc/gurgitate-rules-default. Bunlar kullanıcı kurallarından önce ve sonra işlenir,
respectivamente.
/etc/gurgitate-kuralları sistem genelinde filtreleme ihtiyaçlarını karşılamak için kullanılır: varsayılanı ayarlama
varsayılan MBox yerine Maildir'e posta kutusu stili, biriktirme dizinini ayarlama, şeyler
öyle.
Kullanıcı yapılandırma dosyası $HOME/.gurgitate-kuralları (Veya alternatif olarak,
$HOME/.gurgitate-rules.rb. Ya iş). Buraya kendi kurallarını koy. kullanıcı
yapılandırma dosyası, işleme sırasında bir "dönüş" ile karşılaşmaz, ardından ek
içerdiği kurallar /etc/gurgitate-rules-default çalıştırılır. Bu da dönmezse,
ardından posta mesajları varsayılan posta biriktirme konumuna kaydedilir.
Komut satırında "-f" seçeneği kullanılıyorsa, belirtilen dosya kullanılacak ve
varsayılan kurallar olmayacak. "-f" seçeneği birden fazla kullanılabilir:
gurgitate-mail -f test-kuralları -f ek-kurallar
YAPILANDIRMA PARAMETRELERİ
Gurgitate-mail'in yolunu değiştirmek için ayarlayabileceğiniz birkaç parametre vardır.
davranır. Örneğin şunu söyleyerek bir yapılandırma parametresi ayarlarsınız:
posta göndermek "/usr/sbin/sendmail"
"sendmail" parametresini " olarak ayarlar/usr/sbin/sendmail".
posta
Posta klasörlerini koymak istediğiniz dizin. Bu, varsayılan olarak $HOME/Mail'dir.
kayıt dosyası
Nereye gittin gurgitate-mail'in günlük mesajlarına gitmek için. için standart konum
bu $HOME/.gurgitate.log
mail gönder
Posta teslim etmek için kullanılan sendmail programının tam yolu. Bu herhangi bir program olabilir
parametresi olarak postanın teslim edileceği adreslerin listesini alır ve bu
standart girişte bir posta mesajı.
ev direği
Ana dizininizin tam yolu. Bu, gerçek eviniz ne olursa olsun varsayılandır
dizindir.
biriktirme
Sistemin posta biriktiricilerinin gittiği yol. Bu varsayılan olarak "/var/spool/posta".
Bir Maildir sisteminde bu, "homedir" ile aynı şekilde ayarlanmalıdır.
biriktirme dosyası
Posta biriktirmenizin tam yolunun posta biriktirme dosyası bileşeni. Bu genellikle
Kullanıcı adınızı. Maildir kullanıcıları bunu "Maildir" olarak ayarlamalıdır.
klasör stili
Tercih ettiğiniz klasör stili. Bu (şu anda) MBox veya Maildir olabilir.
FILTRE KURALLAR
Filtre kuralları, aşağıdaki yöntemler ve değişkenlerle birlikte bir dizi Ruby ifadesidir.
Mevcut:
Değişkenler
from Bu, e-posta mesajının zarf "gönderen" adresini içerir. (Bunun
"Kimden:" başlığının içeriğiyle mutlaka aynı değildir)
başlıkları
Bu, mesajın başlıklarını içeren bir nesnedir. Birkaç yöntem var
bu nesneyle birlikte gelenler:
gövde Bu, e-posta iletisinin gövdesini içerir. Henüz, gerçekten hiçbir şey yok
atamanın dışında bununla yapabileceğiniz ilginç; yeniden yazabilirsin
bir e-posta mesajının gövdesi bu şekilde. Eklerle uğraşmak için planlanmıştır
"gurgitate-mail"in gelecekteki sürümü.
posta
Belirttiğinizde "kaydet" yöntemi tarafından kullanılan klasörleri içeren dizin
"= olarak bir klasördosya" (Elm gibi). Varsayılan olarak "$HOME/Mail"dir.
ev direği
Ev dizininiz. Sadece oku.
kayıt dosyası
"Gurgitate-mail" günlük dosyasının konumu. "nil" olarak ayarlanırsa, günlük kaydı yapılmaz
tamamlamak. Varsayılan "$HOME/.gurgitate.log" şeklindedir.
mail gönder
"Sendmail" programının konumu. "İleri" yöntemiyle kullanılır. Varsayılan
"/usr/lib/sendmail".
biriktirme dosyası
Posta biriktirme konumu. Sadece oku.
Yöntemler
eşleşmeler(ad(lar), normal ifade)
"name" başlığı normal ifade "regex" ile eşleşiyorsa "true" değerini döndürür. Eğer
"name" bir başlık adları dizisidir, ardından aşağıdakilerden en az biri doğruysa true değerini döndürür.
başlıklar eşleşir. Hem "Kime:" hem de "Bilgi:" başlıklarının eşleşip eşleşmediğini test etmek için kullanışlıdır.
from E-posta iletisinin zarf "gönderen" adresini döndürür. Bunun aynı olduğunu unutmayın
çıplak "dan" olarak.
"Kime" ve "Cc" içeriğiyle bir HeaderBag (bir tür dizi) döndürür
başlıklar.
to_s Ruby kuralına göre, tüm başlıkları bir "String" nesnesi olarak döndürür.
kayıt etmek(posta kutusu)
Bu, mesajı bir posta kutusuna kaydeder. Posta kutusunu bir = ile bir kelime olarak belirtebilirsiniz.
önüne imzala, bu durumda onu "maildir" içine koyar. kullanmazsanız
=isim biçiminde, sonra mutlak bir yol adı belirtmeniz gerekir. eğer yazamıyorsa
mesajını talep ettiğiniz dosyaya gönderirseniz, "spoolfile" dosyasına yazmaya çalışacaktır.
ileri (adres)
Bu, e-posta mesajını başka bir e-posta adresine iletir.
boru (program)
Bu, mesajı "program" aracılığıyla iletir. "boru", çıkış kodunu döndürür.
mesajın iletildiği program.
filtre(program)
Bu, mesajı "program" aracılığıyla iletir ve yeni bir Gurgitate nesnesi döndürür
filtrelenmiş postayı içerir. (Bu, e-postayı değiştiren harici filtreler için kullanışlıdır.
örneğin, bir spam puanı üstbilgisi ekleyen SpamAssassin gibi.)
Ayrıca söyleyebilirsin
filtre(program) yapmak
# kod burada
son
ve yeni oluşturulan Gurgitate nesnesini bloğa verir.
başlıkları
Bu, başlıkları kendilerine ait bir nesne olarak döndürür. Bu nesnenin kendi yöntemleri vardır:
başlıklar[*başlık adları]
Bu, sorduğunuz başlıkları içeren bir HeaderBag (dizinin bir alt sınıfı) döndürür.
için. Daha sonra, RHS normal ifadesiyle eşleştirmek için bu sonuçtaki =~ operatörünü kullanabilirsiniz.
HeaderBag'deki her şeyle birlikte.
Bir başlığın değerini "headers[name]=newvalue" ile değiştirebilirsiniz.
headers.match(isim, normal ifade)
Normal ifadeyle "name" adındaki başlığı eşleştirir. Bu aynı
başlıklar[isim] =~ /regex/.
headers.matches(isimler,normal ifade)
Başlıkları "adlar" adlarıyla normal ifadeyle eşleştirir. Bu aynısı
başlıklar olarak[*isimler] =~ /regex/.
başlıklar.kimden
gelen zarfı döndürür. Bunu "headers.from=newaddress" ile değiştirebilirsiniz.
çok.
dönüş
Bu, "gurgitate-mail"e e-posta mesajını işlemeyi durdurmasını söyler. kullanmazsan
"return", ardından "gurgitate-mail" aynı postayı tekrar işlemeye devam edecektir.
sonraki kural. Sonunda bir "dönüş" yoksa gurgitate-rules.rb, Daha sonra
"gurgitate-mail", e-posta mesajını normal posta kuyruğuna kaydeder.
log(İleti)
Bu, günlük dosyasına bir günlük mesajı yazar.
BASİT ÖRNEKLER
Açıklamalarıyla birlikte "gurgitate-mail" kurallarına bazı örnekler:
=~ /ebay.com/ adresinden ise save("=ebay"); dönüş; son
eBay'den gelen herhangi bir e-posta (örneğin, otomatik açık artırma sonu bildirimleri ve daha yüksek teklif
bildirimler) "ebay" klasörüne dosyalanır.
eğer =~ /kök@/ sonra save("=root"); dönüş; son
Kökten (herhangi bir ana bilgisayardan) gelen herhangi bir e-posta, özel bir klasöre dosyalanır. Sistem yöneticileri için kullanışlıdır
crontab e-postasını izleme.
if headers.matches(["To","Cc"],"webmaster@") o zaman
kaydet("=web yöneticisi")
dönüş
son
Kime: veya Bilgi: satırı "sysadmin" olan herhangi bir e-posta, bir "sysadmin" klasörüne kaydedilir. Kullanışlı
adreslerine yönlendirilen birden fazla rol hesabı olan kişiler için.
üstbilgiler["Konu"] =~ /\[SPAM\]/ ise
kaydet("=spam")
dönüş
son
Bu, üstbilgilere karşı kalıpları eşleştirmek için farklı bir sözdizimidir. Ayrıca eşleştirebilirsiniz
köşeli parantez içinde birden çok başlık.
eğer başlıklar["Konu","Anahtar kelimeler"] =~ /kötü bir kelime/ o zaman
kaydet("=küfür")
dönüş
son
Konu ve Anahtar Kelimeler başlıklarında "kötü bir kelime" arar ve varsa, kaydeder
"küfür" klasöründeki e-posta.
if headers.matches(["Kime","Bilgi"],"[e-posta korumalı]") sonra
pipe("|rcvstore +posta listesi")
dönüş
son
Bir posta listesine gönderilen herhangi bir e-posta, bir MH klasöründe depolamak için "rcvstore" aracılığıyla iletilir.
O
headers.matches(["Kime","Cc"],/regex/)
deyim, onun için bir kestirme yol olacak kadar sık olur:
eğer için =~ /[e-posta korumalı]/ sonra
pipe("|rcvstore +posta listesi")
dönüş
son
Postayı "rcvstore" aracılığıyla posta listesine yönlendirir.
İLERİ ÖRNEKLER
İşte size neler yapabileceğiniz konusunda bir fikir vermek için biraz daha zekice örnekler.
"gurgitate-posta". adlı bir dosyada bir e-posta beyaz listeniz olduğunu varsayalım.
$HOME/.arkadaşlar, böylece bazı e-postaların spam olup olmayacağını belirleyebilirsiniz.
Ardından, beyaz listenizdeki biri size e-posta gönderirse, bunu otomatik olarak
"gelen kutusu" klasörü:
arkadaşlar=homedir+"/.arkadaşlar"
eğer FileTest.exists?(arkadaşlar) ve FileTest.readable?(arkadaşlar) o zaman
File.new(arkadaşlar).her biri |arkadaş|
=~ friend.chomp'tan ise
"Arkadaştan posta" +friend.chomp günlüğü
kaydet("=gelen kutusu")
dönüş
son
son
son
Tamam, biri size e-posta gönderirse ve bu özellikle size yönelikse (ve kusarsa-
posta zaten başka bir biçimde yakalamadı), o zaman spam olabilir veya olmayabilir: koy
"gri" bir klasöre:
benim_adreslerim= [ /me@example\.com/i,
/me@example\.org/i,
/me@example\.net/i]; # Üç e-posta adresim var
my_addresses.each yap |addr|
if headers.matches(["To","Cc"],addr) o zaman
save("=muhtemelen-spam değil")
dönüş
son
son
Ve bundan sonra, eğer tanıdığınız birinden değilse ve e-posta adresinize gönderilmediyse
ya da adres, o zaman muhtemelen spam olduğunu varsaymak için kaydedilir:
kaydet("=spam")
dönüş
Ancak bu, bir Bayes filtresi kullanılarak geliştirilebilir; örneğin, Eric Raymond'ın
bogofilter programı (http://bogofilter.sourceforge.net) otomatik olarak eğitilebilir ve
beyaz/gri/siyah ayrımları yardımıyla kullanılır. Yukarıdaki örneği ele alarak, ben
bogofilter'a çağrılar ekleyerek ayarlayın:
arkadaşlar=homedir+"/.arkadaşlar"
eğer FileTest.exists?(arkadaşlar) ve FileTest.readable?(arkadaşlar) o zaman
File.new(arkadaşlar).her biri |arkadaş|
=~ friend.chomp'tan ise
"Arkadaştan posta" +friend.chomp günlüğü
pipe("bogofilter -h") # <-- SATIR BURAYA EKLENDİ
kaydet("=gelen kutusu")
dönüş
son
son
son
"bogofilter -h", beyaz listedeki kişilerden gelen postaların gönderilmemesi için bogofilter'ı eğitir
spam olarak kabul edilir. Tamam, .gurgitate kurallarının sonunda, değiştir
kaydet("=spam")
dönüş
için
kaydet("=spam")
boru ("bogofilter -s")
dönüş
Bu, filtrenin geri kalanını geçmeyen herhangi bir şeyin olması gerektiği gibi "bogofilter" eğitir.
spam olarak kabul edilir. Şimdi ilginç kısım için: Kullanmak için bunlar arasındaki biti değiştirin
E-postanın spam olarak kabul edilip edilmeyeceğine karar vermek için "bogofilter":
benim_adreslerim= [ /me@example\.com/i,
/me@example\.org/i,
/me@example\.net/i]; # Üç e-posta adresim var
my_addresses.each yap |addr|
if headers.matches(["To","Cc"],addr) o zaman
if pipe("bogofilter")==1
sonra
log("bogofilter spam olmayabileceğinden şüpheleniyor")
save("=muhtemelen-spam değil")
başka
log("bogofilter muhtemelen spam olduğunu düşünüyor")
kaydet("=spam")
son
dönüş
son
son
"bogofilter", mesajın istenmeyen posta olmadığını düşünüyorsa "1" ve varsa "0" çıkış koduna sahiptir.
mesajın spam olduğunu düşünüyor.
Umarım bu size kullanabileceğiniz şeyler hakkında bir fikir verir.
için "bogfiltre".
onworks.net hizmetlerini kullanarak gurgitate-mail'i çevrimiçi kullanın