Postfix'te sıçramalar nasıl toplanır


15

Bu, bu soru ile ilgilidir:

linux - Haber bülteni başvurum için geri tepme raporu almanın yolları? - Sunucu Hatası

Diyelim ki sıçramaları tanımlamak ve bültenimden aboneliği iptal etmek için bültenler gönderdiğimde böyle e-posta adresleri oluşturuyorum: bounce-123456789@example.com

Sanırım bunu dönüş yolunda kullanacağım, değil mi?

Daha sonra "bounce-" ön ekine sahip tüm bu adresleri tek bir posta kutusuna toplamak için postfix'te nasıl kurabilirim?

Sonunda, insanların sert bir sıçrama karşısında yumuşak bir sıçramadan bahsettiklerini duydum. Birisi farklı bir kişiyi açıklayabilir ve bir e-posta bülteninden ne zaman kalıcı olarak kaldırılacağını bilmek için nasıl sayılmalıdır?


"Sıçrama" kelimesini içeren bir e-posta adresinin de "yuck" olarak görüntülenebileceğini Message-Idunutmayın. kimin kim olduğunu kontrol etmek için yeterli.
Alexis Wilke

Yanıtlar:


17

Sorunuzun kesin cevabı ( bounce-xxx@example.comadresi işleme ), sunucunuzun posta alacak şekilde nasıl yapılandırıldığına bağlıdır. Eğer example.comyapabileceğiniz en iyi toplamak mesajları kontrol sanal domain bounce@example.composta kutusuna (varsayarak recipient_delimiter = -).

Eğer example.com(posta fiili sistem hesaplarına teslim edilir) o zaman bir ekleyebilir sunucu için yerel olarak teslim etki alanıdır .forwardana dizinine dosyayı bouncebir veritabanı veya dosyada sıçrama bilgileri ve kayıtları ayrıştırmak bir programa teslim kullanıcı, . Biçim ve bir programa nasıl teslim edileceği hakkında man localdaha fazla bilgi için bkz .forward.

Çok sayıda alan adı için mesaj gönderdiğimizden, yaptığımız şey bounces.example.comVERP alan adı olarak kullanmaktır . Bu alanın eklenmesi gerekiyor relay_domains. /etc/postfix/transport_mapsBu içerikle oluştur :

bounces.example.com             bulkbounce:

Ardından şuna benzer bir satır ekleyin /etc/postfix/master.cf:

bulkbounce unix - nn - - boru
  kullanıcı = hiç kimse argv = / usr / local / bin / bounce_handler.py $ {alıcı}

bounce_handler.pySenaryo, onun komut satırı seçeneği olarak VERP adresi kabul ayrıştırır ve sıçrama kaydetmek için gerekli veritabanı güncellemeleri yapar.


Ooh, onları alıcı gruplandırmak için kullanma fikrini seviyorum. Tipik olarak a + kullanılır değil mi? Bence çok işe yarayacak, teşekkürler!
Brian Armstrong

11

Aslında, birçok farklı etki alanını desteklemek istiyorsanız Instyle'ın cevabını uygulamak çok zordur ve yanlıştır çünkü:

a) Örneği ile transport_maps, söz konusu alana gönderilen tüm e-postalar, e-postaların geri dönen e-posta olup olmadığı dikkate alınmaksızın söz konusu hizmete gönderilir. Belirli bir alan adı kullandığı için, gerçekten sadece geri dönen e-postalar olmalıdır ... ancak bu şekilde garanti edilemez.

b) Betiğinize gönderilen veriler geri dönen ileti değil, e-postanın kendisidir. Başka bir deyişle, kodunuzun e-postanın neden geri döndüğüne dair hiçbir fikri olmayabilir (örn. Yerel geri dönüş size yalnızca orijinal e-postayı gönderir.)


Postfix'te bu kurulumu yapmanın doğru yolu, geri dönme bildirimi sınıfını kullanmaktır.

1) /etc/postfix/main.cf içinde

notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps

2) / etc / postfix / transport_maps içinde

# when you make changes to this file, run:
#   sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:

Gördüğünüz gibi, şimdi postfix'e bounces@example.combir e-posta geri döndüğünde kullanılmasını söylüyoruz . Daha sonra taşıma haritasında, bulkbounceherhangi bir e-posta adresini işlemek için hizmet olarak kullanmak bounces@example.com.

Sonunda bulkbouncesenaryonuzla tanımlayabilirsiniz :

3) /etc/postfix/master.cf içinde

bulkbounce unix -       n       n       -       -       pipe
  flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}

Bu komut dosyası için bir kullanıcı olması gerekiyor. nobodyde iyi bir seçimdir. Belirli bir kullanıcıya sahip olmak istiyorsanız, aşağıdakilerle oluşturabilirsiniz:

useradd bounce

Komut dosyası olmadan master.cfe-postalar bulkbounce hesabına gönderilir. Dolayısıyla, dosyalardan e-postaları ayrıştıran bir komut dosyanız varsa, bu transport_mapsve olmadan çalışır master.cf.


Aşağıdaki bir yorumdan:

fyi - re: double bounces ...
dönüş adresini değiştiriyorsanız (VERP adresi gibi user+id@fromdomain.com, o zaman sadece betiğinizde zıplamayı ayrıştırmak istiyorsanız, main.cfiçin satırını yorumlamak isteyeceksiniz .bounce_notice_recipient+id


Yolunuzu kullanarak, bir şekilde iki kez, bir kez sıçrama + id @ ile ve bir kez de sıçrama @ ile çift sıçramadan - (kullanıcı sıçrama aslında sistemde yok - niyetim yok gibi) bu e-postaları 'kaydet'). E-posta, geri dönme + id @ dönüş yolu ile gönderilir ... Ne eksik olduğum hakkında bir fikrin var mı?
RVandersteen

@RVandersteen Neden iki kere alacağından emin değilim. Olan bir +id@tür bir zarf olabilir mi?
Alexis Wilke

Varsayılan 'from' adresimizi kullandığımda - hemen çıkma hala bounce@example.com ve originalfrom@example.com adreslerine gönderilir (artık dönüş yolu eklenmez)
RVandersteen

1
İleride başvurmak üzere, notify_classes eklenmesi, sıçrama mesajını FROM / Return Path'a gönderen MTA'nın davranışını değiştirmez. Üstüne davranış ekler (bunu notify_bounce_recipient öğesine de gönderir). İşte bu yüzden çifte postalarım vardı. Bu, yukarıdaki sorularıma cevap veriyor
RVandersteen

1
fyi - re: double bounces..Eğer dönüş adresini ('user+id@fromdomain.com' gibi VERP adresi) değiştiriyorsanız, main.cf dosyasında 'bounce_notice_recipient' için satırı yorumlamak isteyeceksiniz, + betiğini yalnızca betiğinizde ayrıştırmakla ilgileniyorsanız
sarora

1

Çoğu modern posta listesi yazılımı, MTA bunları posta listesi yazılımına geri iletmek için uygun şekilde yapılandırıldıysa VERP mesajlarının nasıl işleneceğini zaten biliyor. Durumunda GNU Mailman sen kontrol etmelidir SSS sayfasını zaten adı "Ben ile VERP kullanırım nasıl? - sınırlayıcı (Postfix recipient_delimiter)".

Bunu yapmak için kendi özel bülten yazılımınızı yapıyorsanız, görevi zaten sizin için kolayca ve kolayca halledebilecek mevcut uygulamaları kullanmak yerine tekerleği neden yeniden icat ettiğinizi kendinize sormalısınız.


Evet, kendi bülten yazılımımı yapıyorum. Bunun iyi bir nedeni var!
Brian Armstrong

O zaman sekmeleri düzgün işlemek için VERP kullanmasına bakmalısınız.
Jeremy Bouse

Merhaba Jeremy, bence haklısın VERP burada standart çözüm, ancak göndereni ve alıcıyı tanımlamak yararlı görünüyor. Bu durumda, sıçramaya neden olan belirli mesajı da tanımlamamız gerekiyor, bu yüzden adreste kendi kimliğimizle özel bir çözüm yapmak zorunda kalacağımıza inanıyorum. Bir alıcı sınırlayıcı kullanarak aşağıda belirtilen çözüm, bunları bir hemen çıkma hesabında gruplandırmamıza izin verecektir. Yardımı takdir rağmen cevap için teşekkürler!
Brian Armstrong

Insyte'nin çözümü, özünde sadece değiştirilmiş bir VERP'dir. Sadece sıçrama işleyicinizin onu tanımlaması için yeterince benzersiz bir tanımlayıcı sağladığından emin olmanız gerekir. Çoğu posta listesi yazılımında, e-posta adresidir, ancak kendi tasarımınızı yaptığınızdan beri herhangi bir şey olabilir.
Jeremy Bouse
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.