Category Archives: CentOS-5

Mailmanの設定

メーリングリストサーバ、Mailmanの設定方法です。

Mailmanは、バーチャルドメインでの利用が容易で、日本語対応したWEB管理画面が整備されているため、リストの管理やユーザ管理も容易です。

ここでは、MTAにPostfixを利用した例を紹介します。

検証環境にはCentOS-5を利用しました。

 

 

Mainmanのインストール

Mainmanは、CentOS-5標準のパッケージとして提供されていますので、ここではそれを利用します。

yum install mailman

*Apache(httpd)がインストールされていない場合は、依存関係でインストールされます。

 

 

Mailmanの初期設定

Mailmanを利用する為に、管理者パスワードの設定、設定ファイルの編集を行います。

 

管理者パスワードの設定

Mailman全体の管理権限を持つ管理者のパスワードを設定します。

パスワードの設定は、以下のコマンドで行います。

/usr/lib/mailman/bin/mmsitepass
New site password: <---パスワードを入力
Again to confirm password: <---確認のための再入力
Password changed.

 

 

Mailman設定ファイルの編集

Mailmanの設定は、まず/etc/mailman/mm_cfg.pyを編集します。

単独ドメインの場合

1つのドメインで利用する場合は以下のように設定します。

例では、MTAにはPostfixと連携します。

また、管理画面のWebサーバには、http://www.unixlife.jp/でアクセス、メールのドメインは、unixlife.jpとします。

なお、WEB管理画面から、メーリングリストを削除出来るようにしています。

(デフォルトではコマンドからしか削除出来ない)

mm_cfg.py

MTA = 'Postfix' <---連携するメールサーバソフト(今回はPostfix)
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias' <---Postfixのaliasコマンド
POSTFIX_MAP_CMD = '/usr/sbin/postmap' <---Postfixのpostmapコマンド

DEFAULT_SERVER_LANGUAGE = 'ja' <---デフォルトの利用言語(日本語)
DEFAULT_URL_HOST   = 'www.unixlife.jp' <---WEB管理画面用のWEBサーバのURL
DEFAULT_URL_PATTERN = 'https://%s/mailman/' <---WEB管理画面をのHTTPSで利用する場合
DEFAULT_EMAIL_HOST = 'unixlife.jp' <---デフォルトのメールドメイン
DEFAULT_ARCHIVE = Off <---メール書庫を作成しない場合

add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes <---WEB管理画面からMLの削除を可能とする

 

バーチャルドメインで利用する場合

バーチャルドメインで利用する場合は以下のように設定します。

例では、MTAにはPostfixと連携します。

ドメインは以下の2つを利用する物とします。

1.unixlife.jp : Webサーバ=http://www.unixlife.jp/ , Mailドメイン=unixlife.jp

2.examples.com : Webサーバ=http://examples.com/ , Mailドメイン=examples.com

MTA = 'Postfix' <---連携するメールサーバソフト(今回はPostfix)
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias' <---Postfixのaliasコマンド
POSTFIX_MAP_CMD = '/usr/sbin/postmap' <---Postfixのpostmapコマンド
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['unixlife.jp','examples.com'] <---利用するバーチャルドメインを列挙

DEFAULT_EMAIL_HOST = 'unixlife.jp' <---デフォルトのバーチャルメールドメイン
EXAMPLES_EMAIL_HOST = 'examples.com' <---追加のバーチャルドメイン

DEFAULT_SERVER_LANGUAGE = 'ja' <---デフォルトの利用言語(日本語)
DEFAULT_URL_HOST   = 'www.unixlife.jp' <---WEB管理画面用のWEBサーバのURL
EXAMPLES_URL_HOST = 'examples.com' <---WEB管理画面用のWEBサーバのURL
DEFAULT_URL_PATTERN = 'https://%s/mailman/' <---WEB管理画面をのHTTPSで利用する場合

add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) <---デフォルトのバーチャルメールドメイン
add_virtualhost(EXAMPLES_URL_HOST, EXAMPLES_EMAIL_HOST) <---追加のバーチャルドメイン

OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes <---WEB管理画面からMLの削除を可能とする

ここまでで、一旦、Mailmanの設定作業は終了です。

その他、設定項目の確認は/usr/lib/mailman/Mailman/Defaults.pyを参照してください。

次に、MTAのPostfixの設定を行います。

 

 

Postfixの設定

MailmanはMLごとにaliasを作成します。これをMTA側で読み込んで、配送処理が出来るように設定します。

設定は、/etc/postfix/main.cfで行います。

単独ドメインの場合

ローカルドメインのみを利用してる場合は、ローカルエリアスの設定を行います。

alias_maps = hash:/etc/aliases,hash:/etc/mailman/aliases
alias_database = hash:/etc/aliases,hash:/etc/mailman/aliases
allow_mail_to_commands = alias,forward,include

 

バーチャルドメインで利用する場合

バーチャルドメインで利用している場合は、ローカルエイリアスの設定と合わせて、バーチャルのエリアスも設定します。

virtual_alias_maps = hash:/etc/postfix/virtual,hash:/etc/mailman/virtual-mailman

alias_maps = hash:/etc/aliases,hash:/etc/mailman/aliases
alias_database = hash:/etc/aliases,hash:/etc/mailman/aliases
allow_mail_to_commands = alias,forward,include

 

PostfixユーザをMailmanグループに追加

/etc/mailman/aliase等をPostfixユーザが参照する為に、PostfixユーザをMailmanグループに追加します。

/etc/group

mailman:x:41:postfix

これでPostfixの設定は終了です。Postfixをreloadしておきましょう。

/etc/init.d/postfix reload

 

 

Mailmanの運用設定

Mailmanを運用するにあたり、各種管理作業用のcronとWEB管理画面の設定を行います。

 

Mailmanの起動と初期化

Mailmanを以下のコマンドで起動

/etc/init.d/mailman start

 

Mailmanのaliaseとvirtual-maulmanの初期化

以下のコマンドで、MailmanのAliaseを初期化します。

/usr/lib/mailman/bin/genaliases

 

管理用メーリングリストの作成

サイトリストと呼ばれる管理用メーリングリストを作成します。

/usr/lib/mailman/bin/newlist -l ja mailman
Enter the email of the person running the list: admin@unixlife.jp <---ML管理者のメールアドレス
Initial mailman password: <---ML管理画面へのログインパスワード

 

 

cronの設定

Mainmanは各種の管理作業を行う為に、cronを実行する必要があります。

cronの定義は、/usr/lib/mailman/cron/crontab.inに記載されていますので、これをcronに設定します。

crontab -u mailman /usr/lib/mailman/cron/crontab.in

 

 

WEB管理画面の設定

Mainmanインストール時に、/etc/httpd/conf.d/mailman.confが作成されていると思います。

MailmanとApacheを起動すれば、そのままの設定で利用出来ます。

/etc/init.d/mailman start 
/etc/init.d/httpd start

このファイルの設定で、mailmanの管理画面にアクセス出来ます。

管理画面には、http://www.unixlife.jp/mailman/adminにアクセスしてください。

なお、デフォルトの設定では、アクセス制限などはかかっていませんので適時設定を追加してください。

 

 

起動設定

MailmanとApacheを自動起動するように設定しておきます。

 chkconfig mailman on chkconfig httpd on

Web管理画面での解説は割愛させて頂きます。利用し易い管理画面なので、いろいろ試してみてください。

Postfix+Dovecot+OpenLDAPでメールサーバ Type-3

Postfix + Dovecot + OpenLDAPによるメールサーバ構築です。

構築環境は、CentOS-5を前提にしてますが、他のデェストリビューションでも差異は少ないと思います。

それぞれのバージョンは、Postfix-2.3.3、Dovecot-2.0系、OpenLDAP-2.3系を利用しました。

このうち、Dovecotのみ独自に2.0系のRPMを作成し利用します。

Postfix+Dovecot+OpenLDAP構成のシステム設定例

当サイトでは現在3パターンのシステム構成例を掲載しています。

Postfix+Dovecot+OpenLDAPでメールサーバ Type-1
Postfix+VDAパッチでQuota管理、SMTP認証にはCyrus-SASLを利用した例

 

Postfix+Dovecot+OpenLDAPでメールサーバ Type-2
Dovecot-1.0系を利用しQuotaを管理し、Dovecot Sieveパッチでメール振り分けを実施。SMTP認証にはDovecot-SASLを利用した例

 

Postfix+Dovecot+OpenLDAPでメールサーバ Type-3
Dovecot-2.0系を利用しQuotaを管理し、Dovecot-Pigeonhole sieveでメール振り分けを実施。SMTP認証にはDovecot-SASLを利用した例

 

 

メールサーバの概要

今回構築するのは、バーチャルドメインのメールサーバで、以下のプロトコルをサポートしています。

SMTP、SMTPS、POP、POPS、IMAP IMAPSです。

SMTP認証にはDovecotのSASLを利用します。

また、メールボックスはMailDir形式とします。

ユーザー管理はOpenLDAPに一元化し、認証には、ユーザIDとパスワードを利用します。

送受信の概要は以下のようになります。

 

 

 

OpenLDAP

今回の構成では、ユーザ管理にOpenLDAPを利用します。

なお、OpenLDAPを用いる場合は、キャッシュ機能を提供する、nscdを実行される事をお勧めします。

 

OpenLDAPのインストール

OpenLDAPのインストールと初期設定が必要ですが、ここでは割愛させていただきます。

OpenLDAPのインストールと設定については、こちらを参照ください。

 

メール用スキーマの作成

OpenLDAPのデータ定義はスキーマファイルによって決められています。

今回構築するシステムでは、標準のスキーマだけでは足りないため、独自にmail.schemaファイルを作成します。

独自定義のスキーマ(mail.schema)

attributetype (1.1.2.1.1.1 NAME 'mailForward'
    DESC 'forward address'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

attributetype (1.1.2.1.1.2 NAME 'mailAlias'
    DESC 'alias address'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

attributetype (1.1.2.1.1.3 NAME 'accountActive'
    DESC 'active or not active'
    EQUALITY booleanMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE)

attributetype (1.1.2.1.1.4 NAME 'domainName'
    DESC 'domain name'
    EQUALITY caseIgnoreIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)

attributetype (1.1.2.1.1.5 NAME 'transport'
    DESC 'transport'
    EQUALITY caseIgnoreIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

attributetype (1.1.2.1.1.6 NAME 'mailQuota'
    DESC 'Mail Home Directory Max byte'
    EQUALITY integerMatch    SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)

attributetype (1.1.2.1.1.7 NAME 'mailDrop'
    DESC 'drop address'
    EQUALITY caseExactIA5Match
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

objectClass (1.1.2.2.1.1 NAME 'mailUser'
    DESC 'mail user Object'
    SUP inetOrgPerson
    MUST ( transport $ homeDirectory $ accountActive $ domainName $ userPassword $ mailQuota )
    MAY  ( mailForward $ mailAlias ))

objectClass (1.1.2.2.1.2 NAME 'mailGroup'
   DESC 'ML Group Account Object'
   SUP inetOrgPerson
   MUST ( accountActive $ domainName $ mailDrop ))

 

mail.schemaの解説

スキーマにはメールシステムで利用する要素とオブジェクトクラスが定義してあります。

スキーマのデータ属性(attributetype)

属性名 説明 参照先
transport SMTPのtransport設定(基本的に”dovecot”で固定) Postfix
domainName 属ドメイン名 Postfix
accountActive アカウントの有効/無効をTRUE/FALSEで指定 Dovecot
mailQuota メールボックスのQuota Dovecot
mailForward 転送先メールアドレス Postfix
mailAlias 別名メールアドレス(エイリアス) Postfix

オブジェクトクラス

objectClass名 説明
mailUser ユーザ用メールアカウント

OpenLDAPの設定

mail.schemaを、OpenLDAPのschemaファイルの保存先にコピーします。

cp mail.schema /etc/opemldap/schema/

 

OpenLDAPのslapd.confでmail.schemaのinclude、index、アクセス制限などの設定を行います。

include		/etc/openldap/schema/core.schema
include		/etc/openldap/schema/cosine.schema
include		/etc/openldap/schema/inetorgperson.schema
include		/etc/openldap/schema/nis.schema
include		/etc/openldap/schema/mail.schema

# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2

pidfile		/var/run/openldap/slapd.pid
argsfile	/var/run/openldap/slapd.args

database	bdb
suffix		"dc=unixlife,dc=local"
rootdn		"cn=Manager,dc=unixlife,dc=local"
rootpw		{MD5}lsKji-Ji.Ljyd=

directory	/var/lib/ldap

ndex objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

access to dn.subtree="dc=mail,dc=unixlife,dc=local" attrs=userPassword
	by self write
	by anonymous auth
	by * none
access to *
	by self write
	by * read

 

OpenLDAPの起動確認

slapd.confの設定をしましたので、OpenLDAPが正常に起動するか確認します。

OpenLDAPを起動後、以下のコマンドを発行してください。

ldapsearch -x -b '' -s base +

ずらずらずら、とメッセージがでれば取りあえず起動は成功です。

ldap_bind: Can’t contact LDAP serverって出たら、残念、起動に失敗してますので、設定ファイルを見直してください。

 

indexの再構築

slap.confでindexの設定をしましたので、indexの再構築も実施しておきます。

slapindex -v -b dc=unixlife,dc=local -f slapd.conf

 

 

メールシステム用登録データの作成

OpenLDAPにメールシステム用のldifを流し込みデータを登録します。

 

メールシステム用LDAPツリーの設計

メールシステム用で利用するツリー構成です。

					----------------------------
					|rootdn:dc=unixlife,dc=local|
					----------------------------
						|
					-----------------------------
					|dc=mail,dc=unixlife,dc=local|
					-----------------------------
					|			|
	--------------------------------------------	----------------------------------------------
	|ou=unixlife.jp,dc=mail,dc=unixlife,dc=local|	|ou=examples.com,dc=mail,dc=unixlife,dc=local|
	-------------------------------------------- 	----------------------------------------------
					|			|
-------------------------------------------------  ---------------------------------------------------
|uid=user1@unixlife.jp,ou=unixlife.jp,dc=mail・・|  |uid=user1@examples.com,ou=examples.com,dc=mail・・|
-------------------------------------------------  ---------------------------------------------------
	|uid=user2@unixlife.jp,・・・・・・・・		|uid=user2@examples.com,・・・・・・・・・
	--------------------------------------		---------------------------------------
		|uid=user3@unixlife.jp,・・・・・・・		|uid=user3@examples.com,・・・・・・・・
		-------------------------------------		-------------------------------------

バーチャルドメインでの利用を前提としたツリー構成としました。

ここでは、unixlife.jpとexamples.comの2つのドメインを管理し、そのドメイン配下にユーザーを追加する形としました。

 

 

OpenLDAPへの登録データの作成

OpenLDAPへのデータ登録はldifファイルを作成し行います。ファイルは文字コードをUTF-8で作成してください。

 

TOPツリーデータの作成(top.ldif)

まずは、最低限必要なLDAPのTOPとMail用データを作成します。

top.ldif

dn: dc=unixlife,dc=local <---LDAPのTOPツリー
dc: unixlife
objectClass: dcObject
objectClass: organization
o: unixlife

dn: dc=mail,dc=unixlife,dc=local <---Mailツリー
objectClass: dcObject
objectClass: organization
dc: mail
o: mail

 

ドメインのデータ作成(domain.ldif)

ドメインのデータを作成します。ここでは、unixlife.jpとexamples.comを作成します。

domain.ldif

dn: ou=unixlife.jp,dc=mail,dc=unixlife,dc=local <---unixlife.jpドメイン
ou: unixlife.jp
objectClass: organizationalUnit

dn: ou=examples.com,dc=mail,dc=unixlife,dc=local <---examples.comのドメイン
ou: examples.com
objectClass: organizationalUnit

 

ユーザデータの作成(user.ldif)

ユーザデータの作成

メールユーザ用データを作成しますが、ここには多くの設定項目がありますので、まずは項目別の表を参照してください。

属性名 説明 値の例 必項属性
cn ラストネーム tomoya 必項
sn ファーストネーム sakurai 必項
uid ユーザID user1@unixlife.jp 必項
userPassword パスワード {MD5}kd.ssjdytTrg= 必項
homeDirectory ユーザのホームディレクトリ /home/mailbox/unixlife.jp/user1 必項
mail ユーザのメールアドレス user1@unixlife.jp 必項
mailForword 転送先メールアドレス hogehoge@hogehoge.com 任意
mailAlias 別名メールアドレス(Alias) webmaster@unixlife.jp 任意
accountActive アカウントの有効/無効をTRUE/FALSEで指定 TRUE 必項
domainName 所属ドメイン名(dn:のdc=の値) unixlife.jp 必項
mailQuota メールQuotaの容量設定(例:100MB)。 100 必須
transport transport基本的にdovecotで固定 dovecot 必須

 

属性の詳細説明

・uid

ユーザ認証用にはメールアドレスと同一値を利用します。

・mailForword

mail及びmailAlias宛に来たメールを、ここに設定されたメールアドレスへ転送します。

・mailAlias

設定されたメールアドレス宛のメールも受信します。

・accountActive

“FALSE”に設定すると、一時的にこのアカウントの利用を停止できます。

では、実際にメールユーザ登録用ldifファイル(user.ldif)を作成します。

ここでは、unixlife.jpに2名、examples.comに1名作成します。

 

user.ldif

dn: uid=user1@unixlife.jp,ou=unixlife.jp,dc=mail,dc=unixlife,dc=local
objectClass: mailUser
cn:sakurai
sn:tomoya
uid: user1@unixlife.jp
userPassword: {MD5}kJ.HtIols6ks=
homeDirectory: /home/mailbox/unixlife.jp/user1
mail: user1@unixlife.jp
mailAlias: webmaster@unixlife.jp
accountActive: TRUE
domainName: unixlife.jp
mailQuota: 200
transport: dovecot

dn: uid=user2@unixlife.jp,ou=unixlife.jp,dc=mail,dc=unixlife,dc=local
objectClass: mailUser
cn:yamada
sn:taro
uid: user2@unixlife.jp
userPassword: {MD5}Jrtd.LouyTrf=
homeDirectory: /home/mailbox/unixlife.jp/user2
mail: user2@unixlife.jp
accountActive: TRUE
domainName: unixlife.jp
mailQuota: 100
transport: dovecot

dn: uid=user1@examples.com,ou=examples.com,dc=mail,dc=unixlife,dc=local
objectClass: mailUser
cn:ito
sn:jiro
uid: user1@examples.com
userPassword: {MD5}JROlkJ.Sdjk=
homeDirectory: /home/mailbox/examples.com/user1
mail: user1@examples.com
accountActive: TRUE
domainName: examples.jp
mailQuota: 100
transport: dovecot

 

メールデータ用ldaifデータの登録

ようやくデータファイルの作成が終了しましたので、これをLDAPに登録して行きます。

TOPツリー用ldifの登録

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=lcoal" -w パスワード -f top.ldif

ドメイン用ldifの登録

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w パスワード -f domain.ldif

ユーザ用ldifの登録

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w パスワード -f user.ldif

これで必要なデータはLDAPに登録されました。

登録データの検索や更新などの実験をアクセス権限の確認も含めやってみてください。

 

 

バーチャル環境の配送ユーザと配送先ディレクトリの作成

バーチャル環境では、実際にメール配送するユーザアカウントは1つです。

そこで、このメール配送用アカウントとメールの配送先ディレクトリを先に作成します。

メール配送ユーザの作成

グループの作成

groupadd -g 500 vmail

ユーザの作成

useradd -g 500 -s /sbin/nologin -u 500 vmail

 

配送先ディレクトリの作成

ここでは、2つのドメインを扱うため、それぞれのディレクトリを作成します。

mkdir -p /home/mailbox/unixlife.jp
mkdir -p /home/mailbox/examples.com
chmod -R 700 /home/mailbox
chown -R vmail.vmail /home/mailbox

 

 

Postfix

PostfixにはDovecot-SASLによるSMTP認証も実装します。また、TLS/SSLでの通信暗号化も行いますが、これは次節以降に順次設定していきます。

まずは、PostfixとOpenLDAPの連係とバーチャル環境でのメール配送の動作を確認していきます。

 

Postfixのインストール

Postfixをインストールして、デフォルトのMTAに設定します。

yum install postfix

 

PostfixをデフォルトのMTAに変更します。

alternatives --config mta

 

 

Postfixの設定

Postfixの設定は、master.cfとmain.cfで行います。

ここでは、メール配送に関する設定をmain.cfにしていきます。

また、メールボックスにメールを配送するのには、Dovecotのdeliverを利用しますので必要な設定をmaster.cfにも行います。

なお、今回利用するドメインは、OpenLDAPに登録した”unixlife.jp”と”examples.com”です。

/etc/postfix/main.cf
main.cfは、最下行に以下の内容を追加する形で設定していきます。

#inet_interfaces = localhost <---コメントにする
myhostname = mail.unixlife.jp
mydomain = unixlife.jp
mynetworks = 127.0.0.0/8
mydestination = $myhostname, localhost.$mydomain, localhost, ldap:/etc/postfix/vdomain.cf<-処理ドメインをLDAPから取得

message_size_limit = 10240000 <---1メッセージの最大容量(10MB)
mailbox_size_limit = 512000000 <---メールボックスの最大容量(500MB)

dovecot_destination_recipient_limit = 1 <---Dovecot deliverを利用する場合に指定
transport_maps = ldap:/etc/postfix/transport.cf <---LDAPから取得、通常はdovecot
virtual_alias_maps = ldap:/etc/postfix/account.cf,ldap:/etc/postfix/group.cf <---LDAPからメールアドレスを取得

local_transport = local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

unknown_local_recipient_reject_code = 550

# SASL Enable <---Dovecot-SASLの有効化
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# Relay Settings <---アクセス制限
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

 

/etc/postfix/master.cf

メールボックスにメールを配送するのには、Dovecotのdeliverを利用しますので、/etc/postfix/master.cfに以下の設定をします。

tlsmgr    unix  -       -       n       1000?   1       tlsmgr

# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
dovecot unix    -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

 

 

OpenLDAPからデータを取得するための設定ファイルを作成していきます。

main.cf内には、OpenLDAPよりデータを取得するための設定ファイルが読み込まれています。

このファイルの書式は以下の通りです。

server_host = OpenLDAPのホストを指定

search_base = 検索dn:を指定

query_filter = 検索条件を指定(%sはメールアドレス)

result_attribute = 検索後に取得したい値を持つ、属性を指定

トランスポート値の取得

/etc/postfix/transport.cf

server_host = localhost
server_host = 192.168.1.1, 192.168.1.2 <---LDAPサーバが2台ある場合
search_base = dc=mail,dc=unixlife,dc=local
query_filter = (&(objectClass=mailUser)(|(mail=%s)(mailAlias=%s))(accountActive=TRUE))
result_attribute = transport

 

メールの配送アドレスを取得

/etc/postfix/account.cf

server_host = localhost
server_host = 192.168.1.1, 192.168.1.2 <---LDAPサーバが2台ある場合
search_base = dc=mail,dc=unixlife,dc=local
query_filter = (&(objectClass=mailUser)(|(mail=%s)(mailAlias=%s))(accountActive=TRUE))
result_attribute = mail, mailForward

メールの所属ドメインを取得

/etc/postfix/vdomain.cf

server_host = localhost
server_host = 192.168.1.1, 192.168.1.2 <---LDAPサーバが2台ある場合
search_base = dc=mail,dc=unixlife,dc=local
query_filter = (domainName=%s)
result_attribute = domainName

メールの配送アドレスを取得(グループアドレス用)

/etc/postfix/group.cf

server_host = localhost
server_host = 192.168.1.1, 192.168.1.2 <---LDAPサーバが2台ある場合
search_base = dc=mail,dc=unixlife,dc=local
query_filter = (&(objectClass=mailGroup)(mail=%s)(accountActive=TRUE))
result_attribute = mailDrop

これで、Postfixの設定は終了です。

 

 

Dovecot

今回は、POP、IMAPサーバにDovecotを利用します。RedHatやCentOSでは5系から、標準パッケージとして提供されています。

ここでは、当サイトで配布しているDevocot-2.0系をインストールします。

リポジトリ設定用RPMの取得とインストール

・i386(32bit)用パッケージの取得とインストール

wget http://unixlife.jp/rpmrepos/centos/5/unixlife/i386/unixlife-release-0.1.1-1UL01.i386.rpm
rpm -ivh unixlife-release-0.1.1-1UL01.i386.rpm

 

・x86_64(64bit)用パッケージの取得とインストール

wget http://unixlife.jp/rpmrepos/centos/5/unixlife/x86_64/unixlife-release-0.1.1-1UL01.x86_64.rpm
rpm -ivh unixlife-release-0.1.1-1UL01.x86_64.rpm

 

 

extrasリポジトリの有効化

Dovecot-2.0のRPMは、UNIXLifeのextrasリポジトリにあるため、このリポジトリを有効にします。

/etc/yum.repos.d/unixlife.repo

[unixlife]
name = CentOS-5 - UNIXLife
baseurl=http://unixlife.jp/rpmrepos/centos/5/unixlife/$basearch
gpgcheck=0
enabled=1

[unixlife-extras]
name = CentOS-5 - UNIXLife
baseurl=http://unixlife.jp/rpmrepos/centos/5/extras/$basearch
gpgcheck=0
enabled=1 ----1に変更

 

リポジトリを更新します。

yum update

 

Dovecotをインストールします。

yum install dovecot

 

 

Dovecotの設定

Dovecotの基本設定は/etc/dovecot/dovecot.confとLDAP連携用の/etc/dovecot/dovecot-ldap.confで行います。

ここでは、DovecotのQuotaプラグインも一緒に設定しています。

doveot.confの設定で変更箇所のみ記載します。

!include conf.d/*.conf

protocols = imap pop3 lmtp

 

dovecot-ldap.confの設定で変更箇所のみ記載します。

まず、dovecot-ldap.confを用意します。

cp /usr/share/doc/dovecot-2.0.12/example-config/dovecot-ldap.conf.ext /etc/dovecot/dovecot-ldap.conf
#hosts =
hosts = localhost

#auth_bind = no
auth_bind = yes

# LDAP protocol version to use. Likely 2 or 3.
#ldap_version = 3

# LDAP base. %variables can be used here.
# For example: dc=mail, dc=example, dc=org
base = dc=mail,dc=unixlife,dc=local

#user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_attrs = homeDirectory=home , mailQuota=quota_rule=*:bytes=%$M

user_filter = (&(objectClass=mailUser)(uid=%u)(accountActive=TRUE))

#pass_filter = (&(objectClass=posixAccount)(uid=%u))
pass_filter = (&(objectClass=mailUser)(uid=%u)(accountActive=TRUE))

#default_pass_scheme = CRYPT
default_pass_scheme = MD5

 

次に、Dovecotの詳細設定を行います。

/etc/dovecot/conf.d/auth-ldap.conf.extの設定で変更箇所のみ記載します。

 passdb {
  driver = ldap
 args = /etc/dovecot/dovecot-ldap.conf
 }

 userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf
}

 

/etc/dovecot/conf.d/10-auth.confの設定で変更箇所のみ記載します。

disable_plaintext_auth = no
auth_cache_size = 10M
auth_mechanisms = plain
#!include auth-system.conf.ext
!include auth-ldap.conf.ext

 

/etc/dovecot/conf.d/10-logging.confの設定で変更箇所のみ記載します。

log_path = syslog
syslog_facility = mail

 

/etc/dovecot/conf.d/10-mail.confの設定で変更箇所のみ記載します。

mail_location = maildir:%h/Maildir
mail_uid = 500
mail_gid = 500
mail_plugins = $mail_plugins quota
mail_attachment_hash = %{md5}

 

/etc/dovecot/conf.d/10-master.confの設定で変更箇所のみ記載します。

service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

 

/etc/dovecot/conf.d/10-ssl.confの設定で変更箇所のみ記載します。

ssl = no

 

/etc/dovecot/conf.d/15-lda.confの設定で変更箇所のみ記載します。

 postmaster_address = root@localhost
 hostname = mail.unixlife.jp
 protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota
}

 

/etc/dovecot/conf.d/20-lmtp.confの設定で変更箇所のみ記載します。

protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota
}

 

/etc/dovecot/conf.d/20-imap.confの設定で変更箇所のみ記載します。

mail_plugins = $mail_plugins imap_quota

 

/etc/dovecot/conf.d/20-pop3.confの設定で変更箇所のみ記載します。

mail_plugins = $mail_plugins quota

 

/etc/dovecot/conf.d/90-quota.confの設定で変更箇所のみ記載します。

plugin {
  #quota = dirsize:User quota
  quota = maildir:User quota
  #quota = dict:User quota::proxy::quota
  #quota = fs:User quota
}

Dovecotの設定は以上です。

 

 

動作確認

ここでは、メールの配送、POPサーバへのログインなどの動作確認を行います。

 

メールの配送確認

設定が終了したら、メール配送のテストをしてください。

メールの配送テストは、”telnet”コマンドを利用すると良いでしょう。

なお、Postfixでは、配送時に配送ディレクトリが無ければ、Postfixが作成してくれます。

telnetコマンドを利用したメール配送テストは以下の用に利用します。

%telnet localhost 25 <---telnetでSMTP(25)へ接続
Trying 127.0.0.1...
Connected to rx7 (127.0.0.1).
Escape character is '^]'.
220 mail.unixlife.jp ESMTP Postfix
helo examples.com  <---helo 接続元ドメイン
250 mail.unixlife.jp
mail from: user1@unixlife.jp <---メール送信元(mail from:)
250 Ok
rcpt to: user1@examples.com <---メール送信先(rcpt to:)
250 Ok
data  <---メール本文を入力するため"data"を入力
354 End data with .
Subject: TEST   <---メール件名を入力

Test Mail.  <---メール本文を入力
.   <---"."で入力終了

250 Ok: queued as D47GB7A2172
quit   <---telnet終了
220 Bye

これで、配送の確認ができればOKです。

 

 

SMTP認証の動作確認

SMTP認証と機構が想定通り機能しているか試します。

これは、SMTPサーバが不正中継などに利用されない為にも、必要な作業です。

 

SMTP認証機構の確認

SMTP認証が機能しているか確認します。これは”telnet”から行います。

%telnet localhost 25 <---ローカルホストの25番ポートに接続
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.example.jp.
Escape character is '^]'.
220 mail.unixlife.jp ESMTP Postfix
ehlo unixlife.jp <---ehloを発行
250-mail.unixlfie.jp
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-XVERP
250 8BITMIME
auth plain <---認証方式を指定
334

250-AUTH LOGIN PLAINが出力されれば、SMPT-AUTHは動作しています。

 

SMTP認証確認の動作確認

実際にSMTP認証を有効にしてSMTPサーバに接続できるか試してください。

また、SMTP認証を利用しない場合、SMTPサーバを利用出来ない事を確認してください。

これには、適当なメールクライアントを利用するのが最もお手軽です。

 

不正中継の確認

不正中継も確認しておきましょう。

いくつかのサイトに、メールの不正中継チェックをしてくれる所がありますので、それを利用すると良いでしょう。

 

POP,IMAPの動作確認

POP、IMAPの動作確認を行ってください。

なお、認証の確認はtelnetで行う事ができます。

telnet localhost 110 <---telnetでPOPに接続
rying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
user ユーザID <---ユーザIDを入力
+OK
pass パスワード <---パスワードを入力
+OK Logged in.
quit <---接続を切断
+OK Logging out.
Connection closed by foreign host.

ここでは、POPS、IMAPSの設定は行っていませんが、これは後ほど追加します。

 

 

SSLの設定

ここでは、SMTP、SMTP-AUTH、POP、IMAPをSSLに対応させます。

具体的には、PostfixとDovecot,Dovecot-SASLにSSLの設定を入れて行きます。

SSL証明書の作成

自己証明書を作成し利用します。

自己証明書の作成

 cd /etc/pki/tls/certs/
make mail.pem
umask 77 ; \
	PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
	PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
	/usr/bin/openssl req -utf8 -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365  \
	-out $PEM2 -set_serial 0 ; \
	cat $PEM1 >  mail.pem ; \
	echo ""    >> mail.pem ; \
	cat $PEM2 >> mail.pem ; \
	rm -f $PEM1 $PEM2
Generating a 1024 bit RSA private key
.............++++++
...........................................++++++
writing new private key to '/tmp/openssl.d32573'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP <---国名、通常は'JP'
State or Province Name (full name) [Berkshire]:Aichi <---都道府県名を指定
Locality Name (eg, city) [Newbury]:Nagoya <---組織の本拠地の市区町村名を指定
Organization Name (eg, company) [My Company Ltd]:UNIXLife <---組織名(法人名)を指定
Organizational Unit Name (eg, section) []: <---部署名を指定
Common Name (eg, your name or your server's hostname) []:mail.unixlife.jp <---FQDNを指定
Email Address []: <---連絡先E-Mailアドレスを指定

 

証明書を参照するグループを作成

証明書を参照出来るグループを作成し、postfixとdovecotユーザをこのグループに所属させます。

groupadd mailcerts
usermod -G mailcerts postfix
usermod -G mailcerts dovecot

 

証明書のオーナーとパーミッションの変更

先ほど作成したグループから証明書が参照出来るように、オーナーとパーミッションを変更します。

chown root.mailcerts mail.pem
chmod 640 mail.pem

 

 

PosfixのSSL対応

PostfixのSSL対応用の設定をしていきます。

/etc/postfix/main.cfに以下を追加

# SSL Configuration
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_use_tls = yes

 

/etc/postfix/master.cfで以下の行のコメントを外します。

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

 

設定が完了したら、Postfixを再起動します。

 

なお、Postfixの設定はこれで終了ですので、main.cfの設定を掲載します。

#inet_interfaces = localhost
myhostname = mail.unixlife.jp
mydomain = unixlife.jp
mynetworks = 127.0.0.0/8
mydestination = $myhostname, localhost.$mydomain, localhost, ldap:/etc/postfix/vdomain.cf

message_size_limit = 51200000
mailbox_size_limit = 512000000

dovecot_destination_recipient_limit = 1
transport_maps = ldap:/etc/postfix/transport.cf
virtual_alias_maps = ldap:/etc/postfix/account.cf,ldap:/etc/postfix/group.cf

local_transport = local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

unknown_local_recipient_reject_code = 550

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# SSL Configuration
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_use_tls = yes

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

 

 

DovecotのSSL対応

/etc/dovecot/conf.d/10-ssl.confに以下の行を追加、変更します。

## Dovecot configuration file
ssl = yes <---SSLの設定を追加

ssl_cert = /etc/pki/tls/certs/mail.pem
ssl_key = /etc/pki/tls/certs/mail.pem

Dovecotを再起動すれば、POPS、IMAPSも利用出来るようになっています。

これで、Postfix+Dovecot+OpenLDAPによるメールサーバの構築は終了です。

なお、追加でウィルス対策やスパムメール対策も行う事が可能です。

その場合は、Postfix+Clamav+Spamassassinの設定を参照ください。

 

 

簡易メーリングリスト機能

OpenLDAPを利用して簡易メーリングリスト機能を追加する方法を記載します。

簡易メーリングリストとは、Mailmanなどの一般的なメーリングリストサーバの様な多機能な物ではなく、あるメールアドレス宛のメールを複数のメールアドレス宛に送信するだけの物ですが、以外と重宝します。

PostfixとOpenLDAPにはすでに設定してあるため、利用方法を解説します。

 

簡易メーリングリスト用LDIFの作成

簡易メーリングリストを利用するための、OpenLDAPに登録するLDIFファイルの設定例です。

オブジェクトクラスのmailGorupでは、mailDropの他にinetOrgPersonのデータが必要になります。

dn: uid=info@unixlife.jp, ou=unixlife.jp,dc=mail,dc=unixlife,dc=local
objectClass: mailGroup
mail: info@unixlife.jp
uid: info@unixlife.jp
cn: ml-group
sn: ml-group
domainName: unixlife.jp
accountActive: TRUE
mailDrop: user1@unixlife.jp
mailDrop: user2@unixlife.jp

これを、OpenLDAPに登録し設定は終了です。

簡易メーリングリストでは、属性mailの値にあるアドレスにメールを送信すると、属性mailDropに設定されているアドレスにメールを配送します。

 

 

Dovecot-Pigeonhole Sieveによるメール振り分け

Dovecot-PigeonholeのSieveプラグインを利用してメールの振り分けを行います。Sieveプラグインを利用する事により、バーチャルドメイン環境でもメールの振り分けが手軽に行えます。

 

Dovecot-Pigeonholeのインストール

Sieveプラグインを利用する為に、Dovecot-Pigeonholeパッケージをインストールします。

yum install dovecot-pigeonhole

 

Dovecot Sieveの設定

Dovecot Sieveを利用出来るようにを設定していきます。

/etc/dovecot/conf.d/20-managesieve.conf

protocols = $protocols sieve

 

/etc/dovecot/conf.d/90-sieve.conf

plugin {
  sieve = %h/.dovecot.sieve
  sieve_dir = %h/sieve
  sieve_global_dir = /etc/dovecot/sieve/
  sieve_global_path = /etc/dovecot/sieve/default.sieve
}

 

/etc/dovecot/conf.d/15-lda.conf

protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota sieve
}

 

/etc/dovecot/conf.d/20-lmtp.confの設定で変更箇所のみ記載します。

protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota sieve
}

これで、DovecotのSieveプラグインの設定は終了です。

 

振り分けの設定

メールの振り分け設定をするには、%h/.sieveファイルに振り分けルールを記述します。

例えば、ヘッダーにX-Spam-Flag YESの文字が含まれるメールをJunkフォルダに振り分けるには以下のようにします。

require ["fileinto"];
# rule:[X-Spam]
if anyof (header :contains "X-Spam-Flag" "YES")
{
	fileinto "Junk";
	stop;
}

 

Sieveの設定には、PHP環境で動作するWebmailソフト、Roundcubeのmanagesieveプラグインを利用すると便利です。

なお、Roundcubeのインストールについては、こちらを参照ください。

 

 

参考資料:

http://www.dovecot.org/

Roundcube webmailのインストールと設定

RoundcubeはPHPで書かれたIMAP対応のフリーWebメールソフトで使いやすく見た目もリッチです。もちろん日本語環境でも問題なく使えます。

PHPで書かれたフリーのWebメールソフトと言えばSquirrelMailが有名ですが、Roundcubeも使いやすいです。

なお、今回インストールした環境はCentOS-5ですが、CentOS-5で提供されているPHPのバージョンでは最新のRoundcubeを利用出来ませんので、当サイトで公開しているPHP-5.3を使用しました。

今回利用する物は以下になります。

MySQL-5.0.77 – CentOS-5

PHP-5.3.6 – UNIXLife

Roundcube-0.5.1

なお、Roundcubeのインストール方法は、Roundcube本体内のINSTALLにも記載されていますので一読ください。

 

 

MySQLのインストールと設定

MySQLはCentOS-5標準の物を利用します。

MySQLのインストールと初期設定は、こちらをご覧ください。

MySQLの基本操作は、こちらをご覧ください。

 

 

PHPのインストールと設定

必要なPHPをインストール、設定します。

 

PHP用リポジトリの追加

PHPは5.3.6を使用しますので、UNIXLifeのyumリポジトリを設定します。

 

リポジトリ設定用RPMの取得とインストール

・i386(32bit)用パッケージの取得とインストール

wget http://unixlife.jp/rpmrepos/centos/5/unixlife/i386/unixlife-release-0.1.1-1UL01.i386.rpm
rpm -ivh unixlife-release-0.1.1-1UL01.i386.rpm

 

・x86_64(64bit)用パッケージの取得とインストール

wget http://unixlife.jp/rpmrepos/centos/5/unixlife/x86_64/unixlife-release-0.1.1-1UL01.x86_64.rpm
rpm -ivh unixlife-release-0.1.1-1UL01.x86_64.rpm

 

リポジトリを更新します。

yum update

 

PHPのインストールと初期設定

PHPのインストール

Roundcubeに必要なPHPパッケージをインストールします。

 yum install php php-cli php-common php-mbstring php-xml php-mysql php-mcrypt php-pear-MDB2 php-pear-Net-SMTP php-pear-Mail-Mime

 

PHPの設定

PHPの一般的な設定と、Roundcubeに必要な設定を行います。

/etc/php.iniの変更箇所のみ明記します。*こちらも参考にしてください。

; PHP's default character set is set to empty.
; http://www.php.net/manual/en/ini.core.php#ini.default-charset
default_charset = "UTF-8"

date.timezone = "Asia/Tokyo"

[mbstring]
; language for internal character representation.
; http://www.php.net/manual/en/mbstring.configuration.php#ini.mbstring.language
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
mbstring.http_output_conv_mimetype=

error_reporting = E_ALL & ~E_NOTICE
memory_limit = 128M
file_uploads = On
session.auto_start = 0

 

ここまで設定できたらApacheを再起動して設定を読み込ませます。

/etc/init.d/httpd restart

 

 

Roundcubeのインストール

Roundcubeは本家サイトから入手してください。

入手したアーカイブを展開します。

tar zxvf roundcubemail-0.5.1.tar.gz -C /var/www/html/

 

展開したら、リネームと必要なアクセス権限を設定します。

cd /var/www/html
mv roundcubemail-0.5.1 roundcube 
chown -R root.apache roundcube 
cd roundcube 
chmod 775 temp 
chmod 775 logs

 

 

データベースの作成と初期化

MySQLにRoundcubeで利用するデータベースを作成します。

#mysql -u root -p 
mysql> create database roundcubemail character set utf8 collate utf8_bin;
mysql> grant all privileges on roundcubemail.* to roundcubemail@localhost identified by 'パスワード';
mysql> flush privileges;
mysql> quit

 

データベースを初期化します。

 cd /var/www/html/roundcube
su
#mysql -p roundcubemail < SQL/mysql.initial.sql

 

 

Roundcubeの設定

ブラウザからの初期設定

Roundcubeの初期設定はブラウザから行います。以下のURLにアクセスしてください。

http://localhost/roundcube/installer/

最初のページでは、必要なライブラリなどのチェック結果が確認出来ます。

以下のような状態になればOKです。

 

 

次に、初期設定をします。ここで必要な情報を入力して [CREATE CONFIG] ボタンを押下すると、/var/www/html/roundcube/config/以下にある設定ファイルのmain.inc.phpとdb.inc.phpの雛形が作られます。

この雛形の内容で、/var/www/html/roundcube/config/以下に、main.inc.phpとdb.inc.phpファイルを作成します。

 

 

次に、最終のテストページです。

もし、設定ファイルに不具合があればここで表示されます。

また、メールの送信テストや、IMAPサーバへの接続テストも実施出来ます。ここでテストにパスすればWEBでの設定は終了です。

 

 

WEB設定スクリプトの削除

WEBでの初期設定が終了したら、installerスクリプトを削除しておきます。

rm -rf /var/www/html/roundcube/installer

以降の設定は、手動でmain.inc.phpを編集します。

 

追加設定

main.inc.phpの以下を修正します。
デフォルトのメール表示文字コードを設定します。

メールのドメイン名を設定
$rcmail_config['username_domain'] = 'unixlife.jp';

デフォルトのメール表示文字コードを設定
// Use this charset as fallback for message decoding
$rcmail_config['default_charset'] = 'ISO-2022-JP';

既定フォルダを作成する(Sent,Drafts,Junk,Trash)
// automatically create the above listed default folders on login
$rcmail_config['create_default_folders'] = true;

 

設定が終了したら、以下のURLでアクセスし利用出来ます。

http://localhost/roundcube/

以上でRoundcubeのインストールと初期設定は終了です。

 

 

ログの設定

デフォルトでは、$ROUNDCUBE_HOME/logs/以下にログファイルが出力されますが、ローテーションは行われません。

そこで、syslog経由で/var/log/messagesにログを出力するよう変更します。

$ROUNDCUBE_HOME/conf/main.inc.php

// log driver:  'syslog' or 'file'.
#$rcmail_config['log_driver'] = 'file';
$rcmail_config['log_driver'] = 'syslog';

// Log sent messages to <log_dir>/sendmail or to syslog
$rcmail_config['smtp_log'] = true;

// Log successful logins to <log_dir>/userlogins or to syslog
$rcmail_config['log_logins'] = true;

 

 

Roundcubeの機種依存文字の文字化け対策

Roundcubeの機種依存文字の文字化け対策を行います。

日本語メールの多くでは、ISO-2022-JPが利用されますが、これでは機種依存文字が文字化けします。

そこで、ISO-2022-JPは、IS-2022-JP-MSとして処理するように変更します。

$ROUNDCUBE_HOME/program/include/main.inc

// convert charset using mbstring module
if ($mbstring_loaded) {
   $aliases['WINDOWS-1257'] = 'ISO-8859-13';
   $aliases['JIS'] = 'ISO-2022-JP-MS';
   $aliases['ISO-2022-JP'] = 'ISO-2022-JP-MS';
   $aliases['EUC-JP'] = 'EUCJP-WIN';
   $aliases['SJIS'] = 'SJIS-WIN';
   $aliases['SHIFT_JIS'] = 'SJIS-WIN';

	if ($mbstring_list === null) {
      $mbstring_list = mb_list_encodings();
      $mbstring_list = array_map('strtoupper', $mbstring_list);
    }

 

 

RoundcubeのPluginを利用する

Roundcubeには多くのプラグインが用意されており、使用頻度の多い物は標準でインストールされていますので、設定すればすぐに利用出来ます。

また、http://trac.roundcube.net/wiki/Plugin_Repositoryから新たに入手し利用する事もできます。

プラグインは、$ROUNDCUBE_HOME/pluginsの中にあります。それぞれのプラグインの利用方法にはREADMEが付いていますので参照してください。

プラグインの有効にするには、$ROUNDCUBE_HOME/config/main.inc.phpで以下のように設定します。

// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array(
'markasjunk2',
'managesieve'
);

以下の設定をして roundcube にアクセスするとプラグインが有効になっています。

 

 

marksjunk2 – [迷惑メールマークプラグイン]の設定方法

marksjunk2の入手

迷惑メールに関するプラグインは、デフォルトでmarksjunkが含まれていますが、これは迷惑メールマークを付ける事は出来ても、外す事が出来ません。

そこで、Mark as Junk 2プラグイン(marksjunk2)を以下から入手し設定します。

http://trac.roundcube.net/wiki/Plugin_Repository

 

プラグインのインストール

markasjunk2.tar.gzを入手したら、プラグインフォルダに展開します。

tar zxvf markasjunk2.tar.gz -C $ROUNDCUBE_HOME/plugins/

 

日本語ロケールの作成

Mark as Junk 2プラグインには日本語localeが含まれていないため、USファイルを元に作成します。

cd $ROUNDCUBE_HOME/plugins/markasjunk2/localization/ 
cp en_US.inc ja_JP.inc

 

作成したja_JP.incファイルを以下の内容に編集します。

<?php
$labels = array();
$labels['buttonjunk'] = '迷惑メール';
$labels['markasjunk'] = '迷惑メールに設定しました。';
$labels['buttonnotjunk'] = '非迷惑メール';
$labels['markasnotjunk'] = ''非迷惑メールに設定しました。';
$messages = array();
$messages['reportedasjunk'] = '迷惑メートして報告しました。';
$messages['reportedasnotjunk'] = '迷惑メールフォルダに移動しました。';
?>

 

プラグインのconfファイルを準備

次に、プラグイン設定ファイルの雛形をコピーします。

cd $ROUNDCUBE_HOME/plugins/markashunk2
cp config.inc.php.dist config.inc.php

 

Roundcubeでプラグインを有効化

最後に、Roundcubeの$ROUNDCUBE_HOME/config/main.inc.phpでmarksjunk2プラグインを有効にします。

$rcmail_config['plugins'] = array(markasjunk2);

 

 

Message list context menu – [右クリックでメニューを表示し操作するプラグイン]の設定方法

このプラグインには、Jqueryuiプラグインが必要です。

Jqueryuiのインストールと設定

tar zxvf jqueryui-1.8.6.tgz -C $ROUNDCUBE_HOME/plugins/
cd $ROUNDCUBE_HOME/plugins/jqueryui
cp config.inc.php.dist config.inc.php

 

Message list context menuのインストールと設定

次に、Message list context menuをインストールします。

tar zxvf contextmenu.tar.gz -C $ROUNDCUBE_HOME/plugins/

 

日本語対応していないため、ロケールファイルを作成します。

cd $ROUNDCUBE_HOME/plugins/contextmenu/localization 
cp en_US.inc ja_JP.inc

 

ja_JP.incを以下の内容に変更します。

<?php
$labels = array();
$labels['markreadfolder'] = '全てのメールを既読にする。';
$labels['collapseall'] = '全てのフォルダを閉じる。';
$labels['expandall'] = '全てのフォルダを開く。';
$labels['copyto'] = 'コピー...';
$messages = array();
?>

 

copymessageのインストールと設定

次に、Message list context menuから利用するコピー用プラグインのcopymessageをインストール、設定します。

tar zxvf copymessage.tar.gz -C $ROUNDCUBE_HOME/plugins/

 

日本語対応していないため、ロケールファイルを作成します。

cd $ROUNDCUBE_HOME/plugins/copymessage/localization
cp en_US.inc ja_JP.inc 

 

ja_JP.incを以下の内容に変更します。

<?php
$labels = array();
$labels['copyto'] = 'コピー...';
$messages = array();
?>

 

インストールしたプラグインの有効化

最後に、インストールしたJqueryui、Message list context menu、copymessageプラグインをmain.inc.phpで有効にします。

$ROUNDCUBE_HOME/config/main.inc.php

// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array(
jqueryui,
contextmenu,
copymessage);

 

 

Compose Addressbook – [メール作成画面からアドレス帳を利用プラグイン]の設定方法

メール作成画面上に、簡易アドレス帳を開き宛先を選択するプラグインをインストール、設定します。

Compose Addressbookプラグインでは、Jqueryuiプラグインが必要です。

Jqueryuiのインストールと設定

tar zxvf jqueryui-1.8.6.tgz -C $ROUNDCUBE_HOME/plugins/ 
cd $ROUNDCUBE_HOME/plugins/jqueryui
cp config.inc.php.dist config.inc.php

 

Compose Addressbookのインストールと設定

tar zxvf compose_addressbook-4.0.tgz -C $ROUNDCUBE_HOME/plugins/
cd $ROUNDCUBE_HOME/plugins/compose_addressbook/
cp config.inc.php.dist config.inc.php

 

config.inc.phpの設定

<?php
// $rcmail_config['compose_addressbooks'] = array('ldap');
// $rcmail_config['compose_addressbooks'] = array('sql', 'static');
// $rcmail_config['compose_addressbooks'] = array('sql');
$rcmail_config['compose_addressbook_mode'] = 'full';
?>

 

インストールしたプラグインの有効化

最後に、インストールしたJqueryui、Compose Addressbookプラグインをmain.inc.phpで有効にします。

$ROUNDCUBE_HOME/config/main.inc.php

// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array(
jqueryui,
compose_addressbook);

 

 

Global Addressbook – [共用アドレス帳プラグイン]の設定方法

Roundcubeメールシステム上で共有利用するアドレス帳です。

Global Addressbookのインストール

tar zxvf globaladdressbook.tar.gz -C $ROUNDCUBE_HOME/plugins/
cd $ROUNDCUBE_HOME/plugins/globaladdressbook
cp config.inc.php.dist config.inc.php

 

Global Addressbookの設定

config.inc.phpを以下の様に設定します。

$rcmail_config['globaladdressbook_groups'] = true;
// global address book admin user
$rcmail_config['globaladdressbook_admin'] = array('admin@unixlife.jp','user1@unixlife.jp');

 

インストールしたプラグインの有効化

最後に、インストールしたGlobal Addressbookプラグインをmain.inc.phpで有効にします。

$ROUNDCUBE_HOME/config/main.inc.php

// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array(globaladdressbook);

 

 

password – [パスワード変更プラグン]の設定方法

ここでは、OpenLDAPに格納されているユーザパスワードを変更する設定方法を解説します。

なお、OpenLDAPの構成は、当サイトで掲載してあるPostfix+Dovecot+OpenLDAPでメールサーバ Type-3の構成を前提としています。

PHPパッケージのインストール

passwordプラグインでOpenLDAPのパスワードを変更するには、php-pear-Net-LDAP2パッケージが必要なためインストールします。

yum install php-pear-Net-LDAP2

 

プラグインのconfファイルを準備

 cd plugins/password/
cp config.inc.php.dist config.inc.php

 

プラグインを設定

plugins/password/config.inc.php

//$rcmail_config['password_driver'] = 'sql';
$rcmail_config['password_driver'] = 'ldap';
// LDAP and LDAP_SIMPLE Driver options
// -----------------------------------
$rcmail_config['password_ldap_host'] = 'localhost';
$rcmail_config['password_ldap_port'] = '389';
$rcmail_config['password_ldap_starttls'] = false;
$rcmail_config['password_ldap_version'] = '3';
$rcmail_config['password_ldap_basedn'] = 'dc=mail,dc=unixlife,dc=local';
$rcmail_config['password_ldap_method'] = 'user';
// LDAP user DN mask
$rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=unixlife.jp,dc=mail,dc=unixlife,dc=local';
//$rcmail_config['password_ldap_searchDN'] = 'cn=roundcube,ou=services,dc=example,dc=com';
//$rcmail_config['password_ldap_searchPW'] = '';
//$rcmail_config['password_ldap_search_base'] = 'ou=people,dc=example,dc=com';
$rcmail_config['password_ldap_search_filter'] = '(&(objectClass=mailUser)(uid=%u)(accountActive=TRUE))';
$rcmail_config['password_ldap_encodage'] = 'md5';

 

Roundcubeでプラグインを有効化

最後に、Roundcubeのconfig/main.inc.phpでpasswordプラグインを有効にします。

$rcmail_config['plugins'] = array(
markasjunk2,
password);

 

 

managesieveプラグインの設定方法

managesieveプラグインにより、Dovecot-PigeonholeのSieveの設定を行う事ができます。

これで、Roundcubeからメールの振り分け設定が可能になります。

Dovecot-Pigeonhole Sieveの設定方法は、当サイトで掲載してあるPostfix+Dovecot+OpenLDAPでメールサーバ Type-3をご覧ください。

 

プラグインのconfファイルを準備

cd plugins/managesieve/
cp config.inc.php.dist config.inc.php

 

プラグインを設定

plugins/managesieve/config.inc.php

// managesieve server port
$rcmail_config['managesieve_port'] = 4190;

$rcmail_config['managesieve_host'] = 'localhost';

// default contents of filters script (eg. default spam filter)
$rcmail_config['managesieve_default'] = '/etc/dovecot/sieve/default.sieve';

 

Roundcubeでプラグインを有効化

最後に、Roundcubeのconfig/main.inc.phpでmanagesieveプラグインを有効にします。

$rcmail_config['plugins'] = array(
markasjunk2,
password,
managesieve);

 

 

参考資料:

http://trac.roundcube.net/wiki