foxcpp / foxcpp/maddy

Dynamic message blob path support

オープン
#520 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
new feature
主要言語
Go
スター
6.1k
フォーク
327
PR マージ指標
30日以内にマージされた PR はありません

説明

# Use case
I'm evaluating maddy for my personal mailserver. I've loved the simplicity and great number of features related to a modern mailserver setup ! Even for personal mailserver its common to have thousand of emails on each mailbox. In my case I have a quite long historic os my mail (almost 20 years) so it's common to have thousand of emails on a folder.

# What problem you are trying to solve?
My primary reason to have my own mailserver is privacy thinking that way the considered setup store all the information on my infrastructure. I've chosen to use imap storage blob and discovered that all msg files no matter the account, domain or imap folder are stored on the same directory.
My thought is that it will lead do performance problems because I easily going to have thousand of files on the same directory it's not good for any filesystem. Additionally, in system administration perspective, not having a way to split messages by domain and/or accounts will make tasks like copying, moving and managing this harder.

Note alternatives you considered and why they are not useful.

# Your idea for a solution
Having config options to allow split messages in different directories for domains, accounts and even imap folders would be great.

How your solution would work in general?
We can have a new config option that allow some kind of format specifications (printf % like) to define the way the message path would be expanded.
For example:
msg_path_format: %d/%a/%f
where:
d -> domain name
a -> email account name
f -> imap folder name

I've started to look at the code and still not sure that all these options are possible, but I would like to discuss and willing to do the PR :-)

- [x] I'm willing to help with the implementation

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、IMAP blob ストレージの設定と、メッセージパスを構築するコードを見つけます。この issue では具体的なファイルやテストは指定されていません。ドメイン、アカウント、フォルダーの値がどのように表現されているかを確認し、そのうえで、メッセージが指定されたディレクトリ構成に保存されることを検証するために必要な設定の動作とテストを定義します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
go
領域
backend
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。