2009-11-22 38 views
5

Ben kullanıcıların e-posta adresleriyle e-posta iletileri almak için gereken bir web uygulaması yazıyorum aldı kullanıcının dış posta kutusunu tekabül ileri ardından yöneticiler bunları onaylatabilirim ve.Postfix mesajı kanca

İleti alma görevi için postfix'i yükledim ve yapılandırdım. Sanal e-posta adreslerini ve kullanıcı e-posta adreslerinin saklandığı mevcut veritabanımı kullanır. Yerel e-posta depolama alanı maildir ve postfix'in sanal MDA'sını kullanıyorum.

Temel olarak, yeni bir mesaj alındığında ve hangi kullanıcı için (maildir mesaj kimliği de çok yardımcı olur) her defasında bir betik çalıştırmak istiyorum. Sonra mesajı python kodundan okuyabiliyordum (python maildir mesaj kutuları için bir modül vardı) ve veritabanına ekledim. Üç Bunu yapmanın yolu düşünebilirsiniz:

  • yinelerler kullanıcı maildir'ler ve herhangi bir yeni mesaj olup olmadığını kontrol, ancak kullanıcıların çok sayıda için etkisiz olacaktır. veritabanında herhangi bir yeni mesajlar (bu daha hızlı olurdu ama ben her şeyi en baştan yapılandırmak zorundayız) varsa
  • kullanım dbmail ve sonra kontrol edin. Ayrıca mevcut kullanıcı veri tabloları kullanılamaz.
  • yanı db ve posta dizinindeki mesajı kaydetmek için sanal maildrop/etrafında sarıcı yazmak, ama aldığım mesaj geçerli ve başarıyla gerçek MDA tarafından kaydedilen olup olmadığını kontrol etmek için bir yol gerekiyordu.

Herhangi bir öneri takdir edildi!

cevap

5

, ben boru ve süreç manuel adresini ve mesajı aldıktan ayarlanan X bayrağı Postfix'i content_filter kullandı. Maildir'deki mesajlara erişmem gerektiğinden, bu yaklaşım benim için iyi çalışıyor.

8

/etc/aliases dosyasında bir kullanıcının bir mail recieves her işletilirse bir program belirtebilirsiniz. Bu program, postaları stdin'de alır. Yani anket yapmak zorunda değilsiniz ve programınız anında çalışır. Kendi soruya yanıt olarak

+0

Bu güzel bir yaklaşım olacağını, ancak sanal röle mekanizmasını kullanıyorum. – fest