web-dev-qa-db-ja.com

IMAPサーバーは、fetchmail、procmail、dovecotを使用してメールを読み取る(開く)ことができません

メールサーバーをセットアップしようとしています!すべてが大丈夫のようですが(数日後)、IMAPサーバーでメールを読み込もうとしたとき:

4月18日17:38:48sd-84941 dovecot:imap(dlp):エラー:open(/data/maildir/dlp/cur/1460993401.13028_0.sd-84941:2、)失敗:アクセスが拒否されました(euid = 1000(michael )egid = 1000(michael)欠落している+ r perm:/data/maildir/dlp/cur/1460993401.13028_0.sd-84941:2 、、グループ8(mail)に属していない、dirは0:8モードで所有= 0777)

メールはmaildirフォルダーにありますが、アクセス許可のために読み取ることができません...

-rw-rw ---- 1ルートルート23634月18日17:551460994924.16416_0.sd-84941

しかし、chmod 777の場合は機能します(ただし、毎回手動で行うことはできません。):

-rwxrwxrwx1ルートルート23634月18日17:551460994924.16416_0.sd-84941:2、

どうしたの?誰がファイルの許可を与えますか? fetchmail、procmail、またはdovecot?

-----編集------

回答ありがとうございます、@ tripleee。私は詳細を提供しようとします:

Sendmail、procmail、fetchmail、dovecot、roundcubeをインストールしました:

  • Sendmail&Roundcube:デフォルトのインストール。

  • Procmail:

/ etc/procmailrc(私はユーザーの方法よりもグローバルなconfの方が好きです)には、次のものがあります:

MAILDIR=/data/mails/
DEFAULT=$MAILDIR/
LOGFILE=/var/log/procmail
VERBOSE=on
  • Fetchmail

/ etc/fetchmailrc内:

set syslog
set daemon 120
poll mail.interpc.fr
  with nodns,
  with protocol POP3,
  user "dlp",
  with password mypass
option keep
  • dovecot

私はvmailユーザーを作成しました:

Sudo addgroup --gid 5000 vmail
Sudo adduser --home /data/mails/ --uid 5000 --gid 5000 --Shell /bin/false vmail

/ etc/dovecot/users(vmailのuidとgidを使用):

dlp:{PLAIN}mypass:5000:5000::

/etc/dovecot/conf.d/10-auth.confで、次のように変更しました:

disable_plaintext_auth = no
#!include auth-system.conf.ext
!include auth-passwdfile.conf.ext

/etc/dovecot/conf.d/10-mail.conf内:mail_location = maildir:/ data/mails /

  • 問題の説明:メールは私のメールフォルダにコピーされますが、root権限があるため、Roundcubeはメールを開くことができません
 root @ sd-84941:/ home/michael#ls -al /data/mails/cur/
合計48 
 drwxr--r-- 2 vmail vmail 4096 Apr 21 15:08。
 drwxr--r-- 5 vmail vmail 4096 Apr 21 15:08 .. 
-rwxr--r--1ルートルート296354月2113:311461238276.4519_0。 sd-84941:2、
 -rwxr--r--1ルートルート37404月21日13:451461239150.5706_0.sd-84941:2、
 -rw-r--r-- 1ルートルート29534月21日15:041461243887.17704_0.sd-84941:2、

私を助けてくれてありがとう...

1
partout

最近のソフトウェアの組み合わせは少し変わっています(つまり、10〜20年前はかなり標準的です)。あなたがしていることは、fetchmailを使用してPOPサーバーに接続し、メールをprocmailに渡して、ローカルディレクトリにメールを配信することだと思います。 POPのみをサポートするサーバーが現在多くないため、このアプローチは一部珍しくなりました。IMAPを使用すると、配信後にサーバー間でメールを移動するためのより良いオプションが可能になります。アップストリームサーバーでIMAPを使用するオプションがある場合は、 imapfilter を確認してください。また、最近では、直接配信を受け入れられないメールサーバーを実行することも珍しくありません。これにより、アップストリームサーバーでメール転送ルールを設定するだけで済みます。

Procmailを使用してローカルディレクトリに直接配信しているため、おそらく問題が発生しています。これは、dovecotが実行するものではないrootとして実行されているprocmailプロセスで実行しているため、dovecotはファイルを読み取ることができません。

Procmailを正しいユーザーとして実行する方法、または(rootとして実行する場合)正しい所有権でファイルを保存するように指示する方法を理解できます。ある程度の互換性は得られるかもしれませんが、たとえば、dovecotは到着時に電子メールのインデックスを適切に作成できないため、検索が損なわれます。

Dovecotのdeliverをローカル配信エージェントとして使用することをお勧めします。 procmailを置き換えるか、procmailによって呼び出される可能性があります 12 。いずれの場合も、適切な引数(-d)を指定して呼び出し、配信先のユーザーを識別する必要があります。 procmailを使用して配信先のメールフォルダを決定する場合は、そのために-p引数を使用するか、dovecotのふるいフィルタリングエンジンを使用してそれらの決定を行う方がよい場合があります。 procmailは、仮想ユーザーではなくシステムユーザーを扱う場合に最適です。

Sieveは、仮想ユーザー向けのprocmailよりも優れた設計のソリューションですが、フィルター構文があまり快適ではない未解決の質問です。私はprocmailから長年にわたって優れたサービスを提供してきましたが、配信前に機能するため、現在は少しふるいを使用していますが、配信後にサーバー間でメールを転送する場合や、状況が許す場合は、imapfilter

2
mc0e