このページの翻訳:
ソースの表示
最近の変更サイトマップ

Postfix + dovecot2で大文字を含むローカルユーザーにメールを送る

Postfixはローカルユーザー名を小文字化して扱うため、大文字を含むユーザーへのメール配送が出来ないのはよく知られた事実だ(Userをuserとしてpasswdを見るので「userはいない」という結果になる)。

そんなPostfixの事実はどうあれ、大文字を含むローカルユーザーが存在するのも事実であって、メールが送られないのは非常によろしくない。というか自分のアカウントの事なんですけどね。

要するにPostfixでローカルユーザーもcase-sensitiveで扱おうというお話。以上、前置き終わり。

環境

  • FreeBSD 9.1-RELEASE-p3
  • Postfix 2.10.0
  • dovecot 2.2.2

Postfixの設定

ローカル配送エージェント(LDA)にdovecotを使うようにする。この際、pipeでユーザー名を小文字化しないようflagsにはuを付けない。

master.cfの最後に追加

dovecot-cs unix  -       n       n       -       -       pipe
   flags=DR user=dovecot:dovecot argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}

main.cfに追加

local_transport = dovecot-cs
dovecot-cs_destination_recipient_limit = 1

local_recipient_mapsは特に弄らなくても問題ないっぽい。

dovecotの設定

dovecotをrootで動かす事になるので、セキュリティリスクに注意。本当はLMTPを使うのが最適解。詳細はLDA - Dovecot WikのMultiple UIDsを参照の事。

10-auth.conf

auth_username_format = (空)

今回の最大のハマりポイント。

dovecotはcase-sensitiveと言われており確かにその通りなんだけど、2.1.0からデフォルトではユーザー名を小文字化するようになった。2.1.0のリリースノートに下記の一文がある。

http://www.dovecot.org/list/dovecot-news/2012-February/000213.html
* auth_username_format default changed to %Lu. If you really want
  case sensitive usernames, set it back to empty.

というわけで、大文字小文字を区別するにはauth_username_formatを空にしてやる必要がある。

dovecot-ldaのパーミッションを変更。

chown root:dovecot /usr/local/libexec/dovecot/dovecot-lda
chmod /usr/local/libexec/dovecot/dovecot-lda

後はPostfix, dovecot共に設定を読み込み直せばローカルユーザーもcase-sensitiveで扱われるようになるハズ。

問題点

local_transportを置き換えるため、/etc/aliasesの設定が無視されるようになる。(エイリアスの解決はPostfixのlocalで行われるため。)

うーむ、これはちょっと困った。

参考サイト

freebsd/postfix/case-sensitive_local_delivery.txt · 最終更新: 2015-01-06 02:51 (外部編集)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0