Dengan kehendak saya, ada server email dalam perawatan saya. Kecil, ~ 20 pengguna. Ini bekerja secara stabil, tidak diinginkan untuk mengubah perangkat lunak. Dan itu tidak perlu, tetapi begitu log cadangan mengisyaratkan dengan tegas - jika Anda melanjutkan dalam semangat yang sama, sepanjang malam akan pergi ke cadangan penuh. Dan masalahnya ada di volume kotak surat pengguna.
Masalahnya ditunjukkan, perlu dipecahkan. Cara ke depan - untuk membeli besi lebih kuat - bukan tipeku, dan anggarannya bukan karet. Opsi yang jelas: kuota. Namun dalam praktiknya, ini tidak banyak membantu. Sumpah "Aku membersihkan semuanya" setelah pemeriksaan lebih dekat berubah menjadi segel, gambar lucu dan arsip foto keluarga (dalam surat perusahaan, ya). Dan jumlah jeritan "Saya memiliki cahaya yang mendesak tidak berfungsi, lakukan segera" meningkat dengan urutan besarnya. Jadi tidak lama dan kehilangan kepercayaan pada orang.
Untungnya, saya bukan psikolog, bukan pelatih atau mentor. Bisnis saya adalah teknologi. Jadi kita akan datang dari sisi teknis.
Hal pertama yang saya pikirkan adalah pesan yang merusak diri sendiri. Secara kasar, segala sesuatu tanpa tanda "penting" dihapus setelah N hari. Untuk selera saya, itu harus "dijahit" ke dalam standar penyimpanan surat elektronik. Tapi sejauh ini tidak, dan implementasinya bagi saya terlalu ambisius.
Pikiran kedua adalah salinan. Ketahui pesan-pesan ini di mana Anda bukan penerima utama. Datang kepada Anda hanya untuk informasi. Beberapa pesan ini dapat dihapus secara otomatis. Tapi, tiba-tiba, di sini para pengguna dibagi menjadi dua kubu: "mereka semua membutuhkanmu apa" dan "apa itu." Saya tidak menguasai algoritma penyortiran otomatis dengan kondisi seperti itu.
Yah, jangan hapus, jadi salin! Ambil semua salinan dan buat tautan simbolik. Analisis cepat menunjukkan bahwa bahkan memproses hanya duplikat LENGKAP dengan cara ini menghemat TIGA repositori. Tapi, tapi, tapi. Sayangnya, ini adalah jalan buntu karena banyak keterbatasan teknis.
Detail untuk mereka yang tertarik di bawah spoiler- tidak semua pengarsip memahami symlink;
- Perangkat lunak server menjadi gila di beberapa tempat;
- kompleksitas org. karakter dan hak akses.
Omong-omong, dalam pengaturan server mail dan cadangan umum, dan penyimpanan arsip untuk pengguna sangat sedikit. Jadi ruang untuk manuver kecil.
Apa yang tersisa Dengan sedih aku melihat segel itu
dan bertanya-tanya sudah jaringan saraf sederhana yang akan membersihkan email untuk pengguna. Lalu ... Permisi, permisi, tapi apa yang dilakukan kucing dalam surat itu? Saya ingat bahwa sebuah surat dengan lampiran beratnya hampir sepertiga lebih dari satu lampiran! Tapi bisakah saya memindahkan lampiran?
Maka dimulailah jalan di mana ada "banyak penemuan indah." Jika saya tahu ... Yah, Anda mengerti. Setetes ketidaktahuan dan keberanian menuntun kita menuju kemenangan!
Jadi: kami melakukan
penyimpanan lampiran secara terpisah dari surat .
Kesalahan utama yang dapat Anda lakukan di sini adalah membuka file eml dalam editor teks dan memutuskan bahwa ada teks biasa. Jadi saya lakukan. Dan sangat senang. Saat ini saya akan menulis file batch. Utilitas baris perintah untuk mengekstraksi lampiran lengkap:
github.com/erikvdv1/eml-attachments atau
github.com/maiken2051/uudeview , begitu saja. Ada masalah dengan pengkodean, tetapi ini bukan hal yang paling penting.
Yang paling penting: mengeluarkan file dan membuat tautan ke sana adalah hal yang sepele. Tetapi untuk mendorong tautan ini ke huruf aslinya ... Karena tidak ada teks. Ada
MIME .
Pembaca yang berpengalaman, tentu saja, tertawa kecil pada penulis yang malang itu. Penulis, bagaimanapun, menemukan kesenangan dari "standar". Hal terpenting yang saya mengerti: menerbangkan jamur agaric tidak diperlukan untuk jatuh menjadi mengamuk.
Contoh dan penyalahgunaan - di bawah spoiler:
charset = utf-8
charset = "UTF-8"
charset = "UTF-8"
charset = UTF-8;
charset = "UTF-8";
charset = "UTF-8";
Ini adalah satu hal yang sama.
Garis terputus di tengah aliran Base64. Dari mana mereka berasal masih merupakan misteri bagi saya.
Dan sebaliknya: tidak adanya \ r \ n \ r \ n setelah bagian header.
Di header itu sendiri, urutan bidang atas permintaan tumit kiri.
Huruf yang lebih lama memungkinkan panjang garis tidak lebih dari 80 karakter, termasuk yang layanan.
Mungkin ada jeda baris dalam nama file (di badan pesan, dan tidak dalam nama itu sendiri).
Secara umum, jeda baris dapat di mana saja, terlepas dari kenyataan bahwa jeda baris standar dinyatakan sebagai akhir dari parameter saat ini.
Teks surat itu sendiri dikodekan. Bagaimana tepatnya itu dikodekan, tetap pada hati nurani server tertentu, ada banyak pilihan (bau).
Dan, dalam surat itu hampir selalu ada bagian html. Artinya, jika Anda mengirim "Halo" dan ada tag br atau p, maka dalam surat itu akan selalu ada DUA bagian: dengan teks sederhana dan dengan tag. Dan teks digandakan. Dan di sini mereka "menyelamatkan" daya komputasi ... Hanya beberapa kebun binatang dengan Frankenstein.
Nama file yang mereka miliki adalah seperti ini: filename = "=? Encoding? Ketik?; Dan itu terjadi seperti ini: filename * 0 * = encoding '' (STA ?? !!). Yang kedua adalah standar yang lebih baru, RFC5987. Standar secara eksplisit menyatakan nama file itu * 0 * = ENC dan nama file = "=? hal yang sama. Di tempat ini, saya akhirnya menjadi yakin bahwa mereka mengejek saya. Bagaimana bisa ditangani secara normal, saya tidak tahu.
Secara terpisah, seperti biasa, Apple mencetak gol. Mereka umumnya memiliki semacam standar sendiri. Ke depan, upaya panjang untuk memproses kode mereka mengarah ke satu-satunya solusi yang benar: "Kesalahan: Apple mail tidak didukung."
Thunderbird melakukannya. Dengan kesedihan, saya naik ke sumbernya, tetapi saya tidak dapat menemukan bagian yang diperlukan dalam satu setengah gigabytes kode untuk campuran python dan dialek Jawa. Membantu IRC mereka, di mana mereka dengan ramah memberi tahu saya ke mana harus mencari, tetapi masih tidak dapat menemukannya.
Tapi dia tidak berkecil hati. Jangan membaca dokumentasi @ tulis kode, dan Anda selesai. Tidak, serius, saya harus melakukan sesuatu untuk mendekatkan akhir MIME.
Script batch tidak cukup. Hasilnya adalah
utilitas baris perintah di C # dan dotNet .
Utilitas ini memiliki dua mode operasi:
Pertama: cukup ekstrak lampirannya. Pada saat yang sama, ini berfungsi dengan benar dengan penyandian untuk Windows.
Kedua: dan di sini kesenangan utama. Sekarang kita masih dapat menyimpan lampiran surat secara terpisah dari surat! Utilitas
membuat surat baru alih-alih yang lama :
lampiran dipotong, surat itu diformat ulang menjadi HTML biasa dengan pengkodean UTF tanpa membatasi panjang baris. Bagian teks / polos diambil sebagai dasarnya. Jika ada tabel di bagian html, maka itu mentransfer mereka sambil mempertahankan format di dalam tabel, tetapi fungsi ini berfungsi begitu-begitu. Di akhir teks surat saat ini (jika itu adalah jawaban atau penerusan), tautan ke sumber daya jaringan dimasukkan dengan jalur ke file yang diekstrak, dalam format file: /// dan ftp: //.

Sistem ini diuji pada 10.000+ huruf dan digunakan pada infrastruktur yang ada.
Keuntungan yang diidentifikasi:+ tadinya:
Cadangkan
Itu dimulai pada 01:00:08
dan berhasil diselesaikan 03:26:32
menjadi:
Cadangkan
Itu dimulai pada 01:00:09
dan berhasil diselesaikan 01:40:36
+ Disimpan 30 +% dari penyimpanan: file-file pergi dari Base64 yang berat dan yang lain menyukainya ke format sistem file normal, ditambah banyak duplikat ditemukan bahkan di dalam kotak surat individual.
+ Kecepatan pemrosesan kotak surat oleh server dan program surat meningkat.
+ Menghilang โSaya membuka surat dari kantor pos, mengeditnya selama 10 jam dan itu tidak bertahanโ
+ Anda dapat menolak kuota.
+ Tetap mungkin untuk menemukan lampiran dalam surat, bukan hanya mentransfernya ke penyimpanan file.
+ Mendekati akhir MIME. Bertobatlah, penulis!
Kekurangan keputusan:- beberapa huruf (tetapi bukan lampiran) masih berdetak. Pada dasarnya tidak secara internal, tetapi ketika dilihat di beberapa klien;
- dalam ftp beberapa setan terus-menerus rusak;
- tidak semua klien email mendukung pembukaan melalui file: ///
Masalah kontroversial:? Surat Apple tidak didukung. Bagi saya - dan Sang Buddha bersamanya;
? Kocok huruf dengan pemformatan kompleks. Biasanya ini adalah brosur dari Pemesanan atau iklan;
? Jika server ftp berada pada port non-standar, maka mungkin ada masalah akses. Diputuskan oleh bot email.
Sedemikian rumitnya masalah itu terpecahkan.
Terima kasih atas perhatian anda!