|
||
|
メールサーバのMBox形式をMailDir形式へ変換メールボックスの形式を、MBoxからMailDirへ変換します。別項「ActiveDirectoryと連携するメールサーバ(SSSDとMBox)」で、もうMBox形式で詰んだ場合とか、MailDirへ変更することで回避できます。 具体的には変換のPerlスクリプトが配布されているので検証してみました。 有名どころでは2種類 ・Mb2md ・Perfect_maildir どちらもPerlスクリプトなのですが、デフォルトでは入っていないPerlモジュールを使用するので、このためだけに少しPerl環境を設定する必要があります。 1.perl環境の準備 2.事前作業 3A Mb2mdを使用して変換 3B Perfect_maildirを使用して変換 4.事後作業 5.補足 Perl環境の設定どちらの変換スクリプトも、実行すると以下のようなエラーが出ます。日付関連のモジュールが入っていない、というメッセージです。 こいつのインストールはちょっと骨が折れます。 もうPerlモジュールがインストールされている環境なら、この手順はスキップできます。 [root@mailsv mail]# perl ~/perfect_maildir.pl /var/mail/maildir/user1 < user1 もしメールサーバが直接ネットに通信できない場合、環境構築は難しいので別サーバでの変換を検討しましょう。Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /root/perfect_maildir.pl line 22. BEGIN failed--compilation aborted at /root/perfect_maildir.pl line 22. perlのDate::Parseモジュールが必要なのですが、インストール中に依存が足らなくて止まります。 開発環境をインストールします。 #yum groupinstall "development tools"
perlのモジュールインストールツールcpanのインストール。 DateTime関連のモジュールをインストールを開始しますが、これが非常に時間がかります。 #yum install cpan
DateTimeのインストールにあまりに時間がかかってしびれを切らし、インストールが完了していないうちに別のセッションから以下のコマンドを実行すると、モジュールインストールできました。#cpan Would you like to configure as much as possible automatically? [yes] yes cpan[1]> install DateTime (時間がかかります) cpan[2]> intall Date::Parse (目的のモジュール) cpan[3]> q 時間が足らないときにどうぞ。 cpanがある程度インストール進行してから、別のSSHセッションで
#cpan Date::Parse 事前作業移行のために、メールサーバを停止します。#systemctl stop postfix 同じディレクトリの中に同じ名前のファイル(MBox)とディレクトリ(変換後のMailDir)は共存できないため#systemctl stop dovecot /var/mailの中に一時ディレクトリを作成します。 #mkdir /var/mail/maildir
変換時点ではオリジナルのメールファイルに手を付けていないため、変換失敗時にメールサーバの切り戻しを素早くできます。ここから、「Mb2mdを使用して変換」か「Perfect_maildirを使用して変換」のいずれかを選択します。 面倒がないのはMb2mdのほうですが、メール内容によっては変換エラーが発生するかもしれません。 2段構えのほうがいいでしょう。 Mb2mdを使用して変換事前作業は終わっているものとします。Mb2mdのスクリプトを配布元から入手します。 Downloadのリンクから、ダウンロードして解凍します。 #wget http://batleth.sapienti-sat.org/projects/mb2md/mb2md-3.20.pl.gz
#gunzip mb2md-3.20.pl.gz 得られたスクリプトは、以下のように使用します。 #perl ~/mb2md-3.20.pl -s mboxファイル -d 出力するユーザーmaildir
ex: #perl ~/mb2md-3.20.pl -s /var/mail/user2 -d /var/mail/maildir/user2 変換作業に入ります。 1ユーザーごとにやっていたらラチがあかないので、実際はスクリプトを作成して連続で実行することになるでしょう。 変換スクリプトのメールパスはフルパスで指定する必要があります。 一時ディレクトリへ変換出力する
事後作業を行います。#perl ~/mb2md-3.20.pl -s /var/mail/user2 -d /var/mail/maildir/user2 アクセス権と所有者をユーザー本人に変更(サブディレクトリまで反映) #chown -R user2 /var/mail/maildir/user2 #chgrp -R user2 /var/mail/maildir/user2 #chmod 700 /var/mail/maildir/user2 ※AD連携の場合は、以下のようにグループ設定します #chgrp -R "domain users" /var/mail/maildir/user2 オリジナルのmboxファイルをリネームします #mv /var/mail/user2 /var/mail/user2_mbox 変換したディレクトリを移動します #mv /var/mail/maildir/user2 /var/mail/ Perfect_maildirを使用して変換する事前作業は終わっているものとします。 スクリプトを配布元から入手します。 Download hearのリンクから、plファイルをダウンロードします。 #wget http://perfectmaildir.home-dn.net/perfect_maildir/perfect_maildir.pl
得られたスクリプトは、以下のように使用します。 #perl perfect_maildir.pl ユーザーmaildir/ < ユーザーmboxファイル
ex: #perl ~/perfect_maildir.pl /var/mail/maildir/user2 < /var/mail/user2 変換作業に入ります。 perfect_maildirは、ユーザーMailDirディレクトリを自動で生成してくれません。 そればかりか、MailDirに必要なnew、curディレクトリも作成してくれません。事前に用意しておきます。 実際は、ユーザーの数が多ければスクリプトを作成して実行することになるでしょう。 変換スクリプトのメールパスはフルパスで指定する必要があります。 ユーザーのMailDirディレクトリを準備する
事後作業を行います。#mkdir /var/mail/maildir/user2 #mkdir /var/mail/maildir/user2/new #mkdir /var/mail/maildir/user2/cur 変換する #perl ~/perfect_maildir.pl /var/mail/maildir/user2 < /var/mail/user2 アクセス権と所有者をユーザー本人に変更(サブディレクトリまで反映) #chown -R user2 /var/mail/maildir/user2 #chgrp -R user2 /var/mail/maildir/user2 #chmod 700 /var/mail/maildir/user2 ※AD連携の場合は、以下のようにグループ設定します #chgrp -R "domain users" /var/mail/maildir/user2 オリジナルのmboxファイルをリネームします #mv /var/mail/user2 /var/mail/user2_mbox 変換したディレクトリを移動します #mv /var/mail/maildir/user2 /var/mail/ 事後作業いままでMBoxで使用していた/var/mailを、MailDir形式のアクセス権にします。新しいユーザーが、ディレクトリを作成できるようにします。 /var/mailはシンボリックリンクのため、/var/spool/mailへ設定します。 #chmod o+w /var/spool/mail
メールサーバの設定を、MBox設定からMailDir設定へ変更します。 Postfixの設定変更
サービスを起動し、受信確認をします。#vi /etc/postfix/main.cf mail_spool_directory = /var/mail/ 末尾へスラッシュを加えてMailDir形式へ設定 Dovecotの設定変更 #vi /etc/dovecot/conf.d/10-mail.conf の編集 mail_location = maildir:/var/mail/%u #systemctl start postfix
#systemctl start dovecot 補足変換したあとのMailDirのアクセス権が不足していると、メール着信やPOP取り出しでPermission deniedが発生したりします。Aug 28 19:59:38 mailsv dovecot[26579]:
pop3(user2)<26900><9YQWC0vnC9jAqAEU>: Error: Couldn't init
INBOX: Mailbox INBOX: opendir(/var/mail/user2/new) failed: Permission
denied (euid=106601107(user2) egid=106600513(domain users) missing +r
perm: /var/mail/user2/new)
・/var/spool/mailに書き込み権はあるか ・ユーザーMailDirのchownやchgrpなどが再帰的に実行されているか、アクセス権はあるか などを確認します。 参考にメールディレクトリのデフォルトのアクセス権を例示しておきます。 Mboxの場合のデフォルトのアクセス権
#/var/spool/mailのアクセス権 drwxrwxr-x. 5 root mail 84 8月 28 19:46 mail #/var/mail配下のmboxファイルのデフォルトのアクセス権 -rw-------. 1 user1 mail 2472 8月 28 13:16 user1 #MailDir形式に必要な/var/spool/mailのアクセス権 drwxrwxrwx. 5 root mail 84 8月 28 19:46 mail #/var/mail配下のmaildirのアクセス権 #サブディレクトリも同じ所有者情報が要ります drwx------ 5 user2 user2 39 8月 28 19:45 user2 #AD連携の場合 drwx------ 5 user2 domain users 39 8月 28 19:45 user2 |
|