Dovecot: メールクライアントと重複フォルダ

Dovecot: メールクライアントと重複フォルダ

私のサーバーでは通常、問題に直面します。さまざまな電子メール クライアントが、 や などの特別なフォルダーをSentやなどTrashのさまざまな名前で呼び出します。Sent ItemsDeleted Items

私の質問は、何らかの方法でこれらすべての名前を「エイリアス」し、Sentサーバー上の同じフォルダーに内部的にマップできるかどうかです。

dovecot.conf次のように、include セクションを変更することができました。

mailbox Sent {
    special_use = \Sent
    auto=subscribe
}

mailbox "Sent Messages" {
    special_use = \Sent
}

mailbox "Sent Items" {
    special_use = \Sent
}

これは、この厄介な問題を「修正」する正しい方法でしょうか? 機能しているように見えますが、少なくともサーバー上では実際には重複は発生しません。ただし、一部の電子メール クライアントでは、重複したフォルダーがすべて選択される可能性があります。

ありがとう。

答え1

あなたはメールボックスエイリアスプラグインDovecot 2.1.10+ が必要です。これにより、ファイルシステム レベルでシンボリック リンクが作成され、1 つのディレクトリに複数の名前が提供されます。両方のディレクトリの内容は同じです。

設定例送信済みそしてごみエイリアス「送信済みアイテム」と「削除済みアイテム」の実際のメールボックスは次のとおりです。

mail_plugins = $mail_plugins mailbox_alias
plugin {
  mailbox_alias_old = Trash
  mailbox_alias_new = Deleted Items
  mailbox_alias_old2 = Sent
  mailbox_alias_new2 = Sent Items
}

メールボックスを作成することを忘れないでください:

namespace inbox {
  mailbox Sent {
    auto = create # or subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = create
    special_use = \Trash
  }
}

もう一つの可能​​性は、あなたが言ったように2つの異なるメールボックスを作成することです。conf.d/15-mailboxes.conf

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

この方法を使用すると、2 つの異なる送信済みボックスが作成されます。ユーザーがそのうちの 1 つを削除しても、もう 1 つは変更されずに残ります。

答え2

プラグインを使用する必要はありません。vmail ディレクトリに移動します。例:

cd /var/vmail/example.com/exampleUser/ 

次に、たとえば、"Sent Messages"フォルダーに保存されているすべてのメッセージをフォルダーに保存したい場合は、最初の手順として、クライアントを介して"Sent"のファイルを に移動するだけです。"Sent Messages""Sent"

次に、/var/vmail/example.com/exampleUser/mailフォルダー内の隠しフォルダーを削除します"Sent Messages"

rm -r /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

他のメールを送信する前に、次"Sent"の隠しフォルダーへのシンボリック リンクを追加します"Sent Messages"(ここの行は長いので、コピーして貼り付ける場合は注意してください)。

ln -s /var/vmail/example.com/exampleUser/mail/.Sent /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

これは問題なく動作するはずです。 または 、あるいは他のフォルダーを 1 つのフォルダーにシンボリックリンクする場合"Sent Items""Mail Sent"または"Sent"他のフォルダーを他のフォルダーにポイントしてメールをそのうちの 1 つだけに保持する他のソリューションが必要な場合は、同じ手順を繰り返します。

dovecot とクライアントをフォルダー"INBOX"として使用する必要がある場合は"Sent"、ユーザー名を使用してメール フォルダーからシンボリック リンクを作成する必要があります (これも長い行です)。

ln -s /var/vmail/example.com/exampleUser/mail/ /var/vmail/example.com/exampleUser/mail/.Sent\ Messages

変更していない限り、/etc/dovecot/conf.d/15-mailboxes.conf次の行を編集します。

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
}

または、これらと同等のものを次のようにする。

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.
  mailbox INBOX {
    special_use = \Sent
  }
  mailbox INBOX {
    special_use = \Sent
  }
}

お気づきのとおり、現在 2 つは同じなので、1 つを削除するだけで済みます。

namespace inbox {
  # For \Sent mailboxes there are two widely used names. We'll mark both of
  # them as \Sent. User typically deletes one of them if duplicates are created.

  mailbox INBOX {
    special_use = \Sent
  }
}

そうすれば、問題なく動作するはずです。送信したメールをラップトップと携帯電話の両方の受信トレイ フォルダーに置きたかったため、このプロセスを実行しました。ラップトップでは dovecot ハックで十分でしたが、携帯電話ではフォルダーが使用され続けたため、シンボリック リンク トリックを使用する必要がありました。シンボリック リンクの送信元と送信先のフォルダー"Sent Messages"を選択する際には、十分に注意してください。"Sent""Sent Messages"

プラグインは単純にシンボリックリンクを作成するだけなので、同じようなものを作成しているだけだと思います。このテクニックを使用すると、必要なすべてのフォルダーをマージして、クライアントを変更せずに作業させることができます。 :-)

関連情報