WEBメール roundcube 複数ドメインを複数メールサーバに振り分け

linux

オープンソースのWEBメールソフト「roundcube」を使って、ドメイン単位でメールサーバを振り分けしたかったので、その方法をメモとして残します。

構成

  • WEBメールサーバ(Linux)*1台
    • 受け付けるURLは1種類のみ
  • 内部メールサーバ(Linux)*3台(それぞれ個別のドメインを管理)

設定方法

各種MWのインストール方法は省略。インターネット上に一杯転がってるので他の人のブログを参照してください。

  • 設定ファイル(インストールパスは読み替えてください
/etc/roundcubemail/config/config.inc.php
  • 設定値(下記はデフォルト値
$config['default_host'] = 'localhost';

設定の方法はHELP的なコメントに書いてありますが、参考までに記載

// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %s - domain name after the '@' from e-mail address provided at login screen
// For example %n = mail.domain.tld, %t = domain.tld

ログインユーザーのドメインで振り分けを行いたいので、「%s」を使います。(※他の変数は英語を読んでください)
ただ、設定値を「 $config[‘default_host’] = ‘%s’; 」としてしまうと、通信先メールサーバは「test.com」や「example.com」となってしまいます。なので、下記としてください。

$config['default_host'] = 'imap.%s';

固定値と変数を合わせて使うことが可能です。
このとき、「imap.test.com」や「imap.example.com」などがDNSにAレコード登録されていない場合は、WEBメールサーバのhostsに追加してもらっても通信可能です。よって、上図で記載の「fugafuga.com」もhostsに書いてしまえば通信可能ということです。

注意点

  • 上記設定とした場合は、ユーザー名だけでのログインは不可で、ログインユーザー名は「$user@$domain」としないとサーバが見つけられません。
  • また、ログインユーザー名が「$user@$domain」となるため、dovecot上でドメイン付のログインを許可していないと Auth Fail となります。
    • roundcubeでログイン時のユーザー名からドメインを削るという機能はありませんでした。
    • dovecot側で「/usr/local/etc/dovecot/conf.d/10-auth.conf」(インストールパスは読み替えてください)の中に下記を加えてください。@以下を無視してログイン可能になります。
auth_username_format = %Ln

補足

  • 送信メールサーバが受信メールサーバと同じであれば、下記でOK
    • 設定ファイル(インストールパスは読み替えてください
      • /etc/roundcubemail/config/config.inc.php
    • 設定値(%hはログインしたユーザーのimapサーバを使うという変数)
      • $config[‘smtp_server’] = ‘%h’;

コメント