Alias ​​postfix dan duplikat email, bagaimana cara memperbaikinya?


18

Saya memiliki alias yang disiapkan di postfix, seperti berikut:

all@mydomain.com:    foo@mydomain.com, bar@mydomain.com ...

Ketika email dikirim ke all@mydomain.com, dan salah satu penerima dalam alias itu adalah cc: ed yang sangat umum (yaitu: "Balas semua"), email tersebut dikirimkan dalam rangkap dua. Misalnya, jika email dikirim ke all@mydomain.com dan foo@mydomain.com adalah cc: ed, itu akan dikirimkan dua kali. Menurut FAQ Postfix , ini adalah desain karena Postfix mengirim email secara paralel tanpa memperluas grup, yang membuatnya lebih cepat daripada sendmail. Nah, itu bagus dan keren, tetapi apakah mungkin untuk mengonfigurasi Postfix untuk benar-benar menghapus penerima duplikat sebelum mengirim email?

Saya telah menemukan banyak posting dari orang-orang di internet yang memiliki masalah yang sama, tetapi saya belum menemukan jawabannya. Jika ini tidak mungkin dilakukan di Postfix, mungkinkah melakukannya di suatu tempat di jalan? Saya sudah mencoba mendidik pengguna saya, tetapi agak sia-sia saya khawatir ...

Saya menjalankan postfix pada Mac OS X Server 10.6, amavis ditetapkan sebagai content_filter dan dovecot ditetapkan sebagai mailbox_command. Saya sudah mencoba mengatur procmail sebagai content_filter untuk pengiriman smtp (sesuai saran di bawah), tetapi sepertinya saya tidak bisa memperbaikinya. Untuk berbagai alasan, saya tidak dapat mengganti konfigurasi standar OS X, yang berarti postfix, amavis dan dovecot tetap bertahan. Namun saya dapat menambahkannya jika saya mau.


Saya pikir itu benar-benar tidak mungkin ...
Antoine Benkemoun

Saya benar-benar mulai percaya bahwa Anda Antoine benar.
Marcus Stade

Ya itu buang-buang hadiah ...
Marcus Stade

2
apakah Anda pernah menemukan solusi untuk ini? Saya mengalami masalah yang sama.
Tommy Arnold

Jawaban:


4

Postfix tidak tahu tentang duplikat email karena cara itu terstruktur. Dimungkinkan untuk melakukan apa yang Anda sarankan dengan menggunakan procmail sebagai agen pengiriman Anda.

Pada dasarnya, setiap pesan yang berasal dari klien harus dikirim dengan Id-Pesan yang unik. Jika dikirim ke banyak orang, Message-Id harus sama, jadi kami menyimpan Message-Idtajuk yang kami lihat dan buang dan yang akan datang yang cocok dengan daftar itu.

Dari http://novosial.org/procmail/

:0 Wh: msgid.lock
| formail -D 8192 ~/.procmail/msgid.cache

Jika saya memahami masalahnya dengan benar, Postfix tidak mungkin diselesaikan karena Postfix mengirimkan e-mail secara paralel, yaitu mengirim ke foo@mydomain.com pada saat yang sama ketika ia memperluas all@mydomain.com dan kemudian lagi mengirim ke foo@mydomain.com. Bukankah solusi Procmail kemudian mungkin memperkenalkan kondisi ras di mana e-mail lain yang tidak terkait (dengan id pesan yang berbeda) dikirim di antara dua e-mail yang bersangkutan dan dengan demikian menimpa cache membuatnya sehingga duplikat e-mail dibuat bagaimanapun disampaikan?
Marcus Stade

Saya mencoba agar saran Anda berfungsi, tetapi saya tidak begitu yakin bagaimana menggabungkan ini dengan pengiriman dovecot, yang digunakan oleh OS X 10.5+ secara default.
Marcus Stade

Jika Anda menggunakan dovecot sebagai agen pengiriman, Anda dapat menggunakan procmail sebagai content_filteryang akan memungkinkan Anda untuk melakukan tugas yang sama di tingkat global
Philip Reynolds

Saya harus mengakui bahwa saya mungkin jauh di atas kepala saya di sini. Saya telah menatap diri saya buta pada halaman parameter konfigurasi untuk postfix dan googling sampai jari-jari saya berdarah tapi sepertinya saya tidak tahu cara mengkonfigurasi ini. Sumber daya apa pun yang Anda kenal atau sorong ke arah yang benar akan sangat dihargai!
Marcus Stade

Saya rasa saya agak mengerti bagaimana cara kerjanya sekarang, tetapi sudah ada content_filter diatur ke amavis. Ini sepertinya semacam pemeriksa anti virus. Saya sudah membaca bahwa mungkin untuk mem-chain content_filters, tetapi sepertinya agak tidak intuitif dan dokumentasinya kurang dari bintang. Benar-benar sangat konyol betapa sulitnya menyingkirkan e-mail duplikat. Bagaimanapun juga, desain desicions, menurut saya ini harus ada di luar kotak atau setidaknya tidak memerlukan monstruos hacks ini.
Marcus Stade

3

Ada cara bagaimana melakukannya, tetapi tidak menggunakan Postfix itu sendiri.

Jika Anda menggunakan Dovecot yang cukup baru dengan implementasi Pigeonhole dari Sieve , ada ekstensi khusus yang dapat digunakan untuk deduplikasi saat pengiriman. Di Dovecot yang lebih tua dari 2.2.18, nama ekstensi ini adalah "vnd.dovecot.duplicate" dan dinonaktifkan secara default, dalam rilis yang lebih baru ekstensi disebut "duplikat" dan harus sudah diaktifkan, tetapi mengaktifkannya secara eksplisit tidak akan membahayakan.

/etc/dovecot/conf.d/90-sieve.conf:

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve

  sieve_before = /mnt/mail/users/global_sieve/deduplicate.sieve
  # sieve_before2 = /mnt/mail/users/global_sieve/antispam.sieve

  sieve_extensions = +vnd.dovecot.duplicate  # for dovecot < 2.2.18
  #sieve_extensions = +duplicate             # for dovecot >= 2.2.18
}

Kemudian buat skrip ayakan untuk menangani deduplikasi itu sendiri (Anda dapat menyesuaikan nama file sesuai keinginan Anda).

/mnt/mail/users/global_sieve/deduplicate.sieve:

require "vnd.dovecot.duplicate"; # for dovecot < 2.2.18
# require "duplicate";           # for dovecot >= 2.2.18

if duplicate {
    discard;
    stop;
}

Kompilasi skrip menggunakan sievec dan pastikan skrip dapat dibaca oleh pengguna dovecot . Lebih banyak dalam dokumen Dovecot.

Jika Anda menggunakan Cyrus, ada fitur penindasan pengiriman pesan duplikat yang dapat diaktifkan menggunakan suppress_duplicates = yes.


Terima kasih banyak untuk menunjukkan mekanisme ini. Perasaan "menemukan jarum di tumpukan jerami".
lkraav

Penemuan selama implementasi: duplicateekstensi bekerja di tingkat pengguna. Saya mencoba untuk menghentikan duplikat lebih dari satu pengguna ke / Cc-d di fileintokotak surat pusat . Ini tidak bekerja Harus juga mengatur virtual_alias_mapsentri catch-all postfix , seperti @domain.com catchall@domain.com, maka saringan duplikat cek akan mengenai catchalldaftar duplikat pengguna.
lkraav

Ya, itu sangat mirip dengan perasaan "menemukan jarum di tumpukan jerami"
Net Runner


0

Ini dari faq postfix lama:

Postfix mengirim surat duplikat Beberapa orang akan mengeluh bahwa Postfix mengirim pesan duplikat. Ini terjadi setiap kali satu pesan dikirimkan ke beberapa alamat yang menjangkau pengguna yang sama. Contoh skenario tersebut adalah:

  • Satu pesan dikirim ke pengguna, dan ke alias yang mencantumkan pengguna. Pengguna menerima satu salinan surat secara langsung, dan satu salinan melalui alias.

    • Satu pesan dikirim ke beberapa alias yang mencantumkan pengguna. Pengguna menerima satu salinan surat melalui masing-masing alias.

Beberapa orang bahkan akan berpendapat bahwa ini adalah perilaku yang "benar". Mungkin lebih merupakan masalah harapan dan apa yang biasa digunakan seseorang.

Ini bisa "diperbaiki" hanya dengan membuat Postfix lebih lambat. Pada contoh di atas, Postfix pertama-tama harus memperluas semua daftar distribusi sebelum memulai pengiriman apa pun. Secara desain, Postfix mengirimkan surat ke berbagai tujuan secara paralel, dan pengiriman lokal tidak terkecuali. Inilah mengapa Postfix bisa lebih cepat dari sendmail.

Jadi dengan desain Anda melihat perilaku itu. Mungkin jika Anda menemukan filter konten yang dapat menghapus ID pesan duplikat, Anda dapat menghilangkannya setelah acara pengiriman.

Sendmail tidak memiliki masalah ini karena ia memperluas semuanya terlebih dahulu dan menghapus duplikat.


Ya, saya membacanya, mungkin saya harus memperbarui pertanyaan saya. Dengan desain atau tidak, itu masih menjadi masalah. Saya mengerti mengapa ini berperilaku seperti itu dan saya mengerti bahwa mencoba mencari solusi di Postfix adalah sia-sia. Namun, saya sudah mencoba membuat beberapa solusi filter konten menggunakan Procmail dan sepertinya saya tidak bisa memperbaikinya. Sangat mungkin bahwa saya tidak memahami filter konten atau procmail dengan benar, atau keduanya. Dalam kedua kasus saya masih ingin memperbaikinya. Sayangnya, pengaturan seperti itu tidak dapat dimodifikasi, hanya ditambahkan ke. Sayangnya, saya tidak dapat menggunakan sendmail alih-alih postfix.
Marcus Stade

Saya memperbarui pertanyaan dengan beberapa informasi lebih lanjut tetapi jujur, tautan ke FAQ ada di sana untuk memulai. Saya sangat menghargai saran yang membantu!
Marcus Stade

Tidak menyadari bahwa itu adalah tautan ke konten yang sama. Bekerja dalam keamanan IT, Anda menjadi agak paranoid tentang mengklik tautan acak. Bisakah Anda mengonfirmasi bahwa pesan duplikat memiliki ID pesan yang sama?
jeffatrackaid

Sudah hari yang panjang jadi saya perlu meninjau posting asli Anda tetapi bagaimana dengan ini: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

Saya memang dapat mengkonfirmasi bahwa pesan duplikat memiliki ID pesan yang sama. Mengatur duplikat_filter_limit sayangnya tidak membantu.
Marcus Stade

0

Solusi resmi ada di sini .. http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) Jumlah maksimal alamat yang diingat oleh filter duplikat penerima untuk alias (5) atau virtual (5) alias ekspansi, atau untuk tampilan antrian showq (8) (dengan rilis Postfix sebelumnya, batas defaultnya adalah 1000).

duplikat_filter_style (ketat) Kebijakan filter penerima duplikat: ketat atau pragmatis.


1
Ini sepertinya tidak melakukan apa-apa ...
grufftech

postfix.1071664.n5.nabble.com/... mengklaim ini tidak pernah diterapkan
Yanko Hernández Álvarez

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.