20677


Dovecot + Postfix + OpenLDAPの環境で、受信メールの件数を確認しようとしています。  
コマンドより `mail`コマンドでメールの送信をおこないました。

[code]

    [root@mailcli-01 openldap]# mail hoge13@mailsvr-01.local
    Subject: testtesttest
    testtesttesttest
    .
    EOT
    
[/code]

そして、`/var/vmail/hoge13/Maildir/new` に移動して、受信メールがあることを確認しました。

[code]

    [root@mailsvr-01 new]# ll
    合計 4
    -rw------- 1 mailadmin mailadmin 748  1月  6 14:27 2016 1452058078.Vfd00Ic36f3M146124.mailsvr-01.local
    
[/code]

その上で、`telnet`コマンドで POP3 (110ポート) を指定してメールの件数を確認しましたが、0件と表示されてしまいます。

[code]

    [root@mailsvr-01 new]# telnet mailsvr-01.local 110
    Trying 192.168.100.41...
    Connected to mailsvr-01.local.
    Escape character is '^]'.
    +OK Dovecot ready.
    USER hoge13
    +OK
    PASS naisyo
    +OK Logged in.
    LIST
    +OK 0 messages:
    
[/code]

どこを見直せばよいかご教授いただけますでしょうか。  
よろしくお願いいたします。


CC BY-SA 3.0
2016-01-06T06:32:09.310
20653
2016-01-08T08:09:04.530
2016-01-06T15:49:10.637
3061
13426
question
postfix ldap dovecot
Postfix で受信したメールが Dovecot POP3 で参照できない


メールボックスのパス名から推測すると、MDA (Mail Delivery Agent。メールボックスへメールメッセージを配送するサービス) として
Postfix の `virtual`(8) を利用していると見受けられます。以下、その前提で。

Postfix `virtual`(8) に設定したメールボックスの場所と、MRA (Mail Retrieval
Agent。メーラーに対してメールボックスへのアクセスを提供するサービス) である Dovecot POP3
サーバーに設定したメールボックスの場所が食い違っているためだと思われます。

Dovecot でユーザーのメールボックス形式や場所を調べるには `doveadm`(1) を利用します。これで設定を確認しましょう。以下は実行例です。

[code]

    # doveadm user foobar
    field   value
    user    foobar
    uid     8
    gid     12
    home    /var/mail/example.ac.jp/foobar
    mail    maildir:~/Maildir
    quota_rule      *:bytes=0M
    
[/code]

以下のいずれかの対処が必要です。

  * Postfix の設定を変更し、MDA として Dovecot の `lmtp` (LMTP サービス) あるいは `dovecot-lda`(1) を利用するようにする。(これにより、Dovecot で設定したメールボックスにメールメッセージが配送されるようになる)
  * Dovecot の設定を変更し、メールボックスの場所を Postfix の `virtual`(8) に設定した場所に合わせる。

個人的には、前者の「MDA として Dovecot を利用する」ほうがお勧めです。こちらであれば、Postfix
側にメールボックスの場所を設定する必要がありませんし、Dovecot MDA 独自の機能 (quota, sieve など) を利用できるからです。

* * *

Postfix で Dovecot LMTP を利用する手順は Wiki に記載があります。

  * HowTo/PostfixDovecotLMTP - Dovecot Wiki 
    * <http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP>

* * *

以下は Dovecot + LDAP において、ユーザーのメールボックスに関する設定を行なう一例です。ご参考までに。(`dovecot.conf`
や相当するファイルの設定と組合せる構成もありますが、それには触れません)

Dovecot のユーザーの各種属性を LDAP サーバーのユーザーエントリあるいは `dovecot-ldap.conf.ext`
(あるいは相当するファイル) で設定しているのであれば、そのファイル中の `user_attrs` パラメーターを適宜調整する必要があります。もし
`userdb { driver=prefetch }` を利用しているなら `pass_attrs` パラメーターも要調整。

例えば、すべてのユーザーの UID と GID が `mailadmin`、ユーザーエントリの `uid` 属性がユーザー名を保持している、メールボックスは
maildir 形式で場所が `/var/vmail/<uid属性の値>/Maildir`
であるなら、次のような記述になります。これはあくまで例ですので、ほかにも LDAP ユーザーエントリの属性 → Dovecot
ユーザーの属性にマッピングしたい値があるなら、適宜調整してください。

[code]

    user_attrs = \
      =uid=mailadmin, \
      =gid=mailadmin, \
      uid=mail=maildir:/var/vmail/%$/Maildir
    
[/code]

詳細は Dovecot の Wiki をどうぞ。このあたり↓かな?

  * AuthDatabase/LDAP/Userdb - Dovecot Wiki 
    * <http://wiki2.dovecot.org/AuthDatabase/LDAP/Userdb>

UID / GID の値(数値)によっては、`dovecot.conf` で `first_valid_uid`、 `last_valid_uid`、
`first_valid_gid`、 `last_valid_gid`
パラメーターの値を調整する必要があるかもしれません。適宜調整してください。Dovecot の全ユーザーの UID / GID の名前がどちらも
`mailadmin` で、その UID 値 / GID 値がどちらも `1000` の場合:

[code]

    first_valid_uid = 1000
    last_valid_uid = 1000
    first_valid_gid = 1000
    last_valid_gid = 1000
    
[/code]


CC BY-SA 3.0
2016-01-06T13:53:51.080
20677
2016-01-08T08:09:04.530
2016-01-08T08:09:04.530
3061
3061
20653
answer