
予備のサーバーをCentOS6.4で作成中、ブリッジを作ると名前の解決が出来ない。
/etc/resolve.confの設定は正しいし、NetworkManagerは止めてあるので、resolve.confは書き換わっていない。digやnslookupは応答しない。何のことはない、作った/etc/sysconfig/network-scripts/ifcfg-br0にDNSの設定が抜けていた。 このファイルにDNS1=192.168.xxx.1と設定し
(203/8/31訂正)これは /etc/sysconfig/network-scripts/ifcfg-eth0に DEFROUTE=yes と設定があり、これではdefaultのルートになってしまい、br0と矛盾するのが原因、これをコメントアウトし
# service network restart
でネットワークを再起動するとOKになった。

必ずpartedを使用し、作成をする事。詳しいpartedの使い方はここを参照
一つのHDDだけに1GBの領域だけを作る事(修復途中でやり直すならraid1のままで構わない)。ファイルシステムはext3にする事。もし他に領域があれば削除しておく事。
partedの使い方:
# parted /dev/sdb → sdbは領域を操作するディスク
(parted) ← この様にコマンド待になる
partedのコマンド:
p 領域を表示する
help どんなコマンドがあるか表示
rm 領域を削除する、領域の番号を聞いてくるので入力する。必ず全ての領域を削除し、何も無い状態から、mkpartで作る事
mkpart 領域を作成する。パーティションの名前はブランクで良い。ファイルシステムの種類は ext3。開始?は メガバイトで指定、つまり1.048。終了?はメガバイトで指定、つまり1026。最後に警告が表示されるが i で無視。
set フラグを設定する。パーテション番号は 1。反転するフラグは boot。新しい状態は on
select /dev/sdc HDDを変更する。もう一つのHDDにして、そのHDDの領域は全て削除しておく事、ブートの領域も作らない
q partedプログラムの終了

本来なら、壊れたHDDを交換し、raidの再構築をすればraid1の所は(システム、ファームウェアとも言う)復旧できるが(もちろんデフォルトでraid0になっていた肝心のデーターは復旧出来ない。一部は必死でトライし、それはニュースにあるLinkStaionが壊れたを参照)、ファームウェアも新しくなっている見たいだし、壊れた1TBのディスクを新しくし、(注意、今時はビッグセクターと呼ばれる物理的な1セクターが4096バイト・4KBのディスクがあるが、壊れていない方は512バイトなので、4KBのディスクより若干高かったが512バイトセクターの1TBを購入した)。しかしこれがどつぼにはまる原因であった。(ディスクの問題ではなく、ファームウェアをアップデートしようとした事)これで直るまで金曜日の夜から、月曜日の夜まで、合計時間にして約30時間位かかった
WEBにはTFTPを使用しているものが多いが、私は出来なかった。これを起動するとタスクバーに常駐し、LinkStationを繋ぐとアイコンの色が変り....私は変化しなかったし、TFTPの動作がよく解からない。何で繋ぐだけでFTPの送受信が始まるんだ?LinkStationのファームウエアが自動でやっているとは考えにくい。結論から言うとTFTPは必要なかった。
参考URL:http://metrocrusader.blogspot.jp/2013/03/buffalo-linkstation-ls-x10tlj.html ここはディスクがシングルの分なので、それを頭において置くこと
用意するもの:
ディスクの初期設定のために、Linux(私はCentOS Ver6.4を使用、Linux を持っていなければKNOPPIXがいい。ダウンロードはここから)
ファームウェアを転送するための Windowds XPか7(両OS共確認済)、8は持っていないので試していない。
アップデータープログラム。ダウンロードは
ここから自分のLinkStationを選び、●LinkStationシリーズ ファームウェア アップデーター(Windows)をクリック、表示されたページのかなり下の方に 「ダウンロードソフトウェア使用許諾契約」に同意してダウンロードする がありますので、そこをクリックし、ls_series-164.exe(2013-6-28にチェックしたらls_series-165.exeになっていた) を保存して置く。これ以降、書いてあるファイル名等は機種が違えば違ってくる可能性があります。
Window機での作業
1:アップデータープログラムの解凍
ダウンロードした ls_series-164.exe は自己解凍プログラムなので、ダブルクリックすると、決め打ちで、C:\BUFFALO\ls_series-164 に解凍される。
2:LinkStationのブート領域に保存するプログラムの作成
出来たファイルの中のuImage.imgとinitrd.imgの拡張子を .zip に変更し、それぞれダブルクリックし解凍をする。保存するフォルダーを聞いてくるがデフォルトでいい、その後パスワードを聞いてくるので、下記のどれかを入れる。
1NIf_2yUOlRDpYZUVNqboRpMBoZwT4PzoUvOPUp6l
aAhvlM1Yp7_2VSm6BhgkmTOrCN1JyE0C5Q6cB3oBB
YvSInIQopeipx66t_DCdfEvfP47qeVPhNhAuSYmA4
IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty
その後、出来た uImage-lsp.5.x.buffalo を uImage.buffalo に変更し、これとinirdから出来た initrd.buffalo の二つをどこかに保存して置く。
もう一つuImage-88f5182.buffaloというファイルも有るがこれは何に使うか不明。他のシリーズに必要なのかも知れない。
Linuxでディスクに書き込むので、 uImage.buffaloとinitrd.buffaloをUSBにコピーしておく
Linux機での作業
3:ディスクの一台に1GBの領域を作っておく。詳細はここの 2:1GBブート領域を作るを参照
その際GPTで作るので、parted等で領域を作ること(fdiskではいけない)又,ファイルシステムはext3でフォーマットし、そこにUSBからuImage.buffaloとinitrd.buffalo をコピーする。一台だけだが、アップデーターが自動的にこのブートやシステム領域になる5.1GBの部分はraid1で作ってくれるので、わざわざraid1にする必要は無い。
partedで見ると
この図はテストで作った250GBディスクのもので、1TBのものではない(最後の領域6が増えるだけで他は変化しない)。また、bootフラグがついていないがつけて置く事。最初は必ずブートフラグを付けておかないとLinkstationが見つからなくなる。
領域2がルートになり、領域3と4は1MBしかない、何に使っているかは不明だが、システムがデーターを保存しておくところではないかな??。領域5はスワップ領域で、領域6が我々が使う領域。
又、LSUpdater.exeで"ACP_STATE_FAILURE"のエラーが出たら、ブート領域には上記2つのファイル以外は入れないこと、ごみ箱等も消去しておく事。Linuxを終了する時は、必ずumountしてから、linuxの終了をする事。ブート領域以外の領域は消去しておく事。
領域を作ったら、保存してあった、uImage.buffalo と initrd.buffalo をこの1GBの領域に保存して置くこと。
Window機での作業
4:ファームウェアをアップデートする。
ここで一番肝心なのは、さっき出来たuImage.baffaoloを右クリックし→送る→圧縮(zip形式)フォルダーをクリックすると同じフォルダーにuImage.zipというファイルが出来るのでその拡張子を .img に変更し、LSUpdater.exeがあるフォルダーに保存して置く事。私はこれが判らず随分苦労した。これはLSUpdater.exeがブート領域に保存してあったuImage.buffaloを消去する。考えた見れば当たり前で、シングルのディスクのブート領域が、raid1で作ったブートになるのだから、前に有ったファイルはなくなって当たり前。デモそれに行き着くまでの道のりの長かった事。それ故、uImage.imgを転送し、これを解凍し、uImage.buffaloにrenameしているようである。ちなみにこのuImage.buffaloはカーネルのイメージだとどっかに書いてあった。
まずLSUpdater.iniをメモ帳等で開き、
これより前は変更しない
[Flags]
VersionCheck = 0 ← 変更
NoFormatting = 0 ← 変更
[SpecialFlags] ← 追加
Debug = 1 ← 追加
としておき、LSUpdater.exeを走らせる。ウィンドウが開いたら、上の左にあるアイコンをクリックし、記入途中
注意点はLinkStationとWindow機のIPは同じサブネットにある事。TFTP使用の様にWindow機のIPを192.168.11.1等の固定にせず、素直にDHCPからIPを貰えば,自動的に同じレンジになる。
これで後はLinkStationが自動的に再起動し、LEDが黄色の点滅になり、最終的にPowerLEDが青の点灯になればOKの筈であるが、随分と時間が掛かるので気長にコーヒーでも飲みながら待つ事。ステータスLEDが赤の点滅でなければ、何かをやっているという事。但し、powerLEDが青の点灯になってもEMモードになっている事があるので、必ずNasNavi2.exeでEMモードや上段のLinkStationのアイコンに?や!が付いていない事を確認すること。
これで、WEBから設定が出来る。初期設定ではDHCPサーバからIPを貰う設定なので、NasNavi2.exeでアサインされているIPが判るので、ブラウザのアドレスバーに直接IP打ち込めばOK。
IDはadmin パスワードは password である。
私はデフォルトのraid0で苦労したので、早速データーの保存領域をraid1に変更した。ここを参照
LED表示の意味はここを参照
でもraid1にしたらLEDが橙で一回長く、七回短く、つまりI7、つまりアレイ リシンク中。これってリシンクロナイズ中って事?raid1にしたので、データーは入っていないのに1TBのディスクの領域を同期しているのかなー。勿論同期が終らなくても問題無く使えているので、ご安心を。
ともかく、もしそうなら1TB(随分長い筈)が終われば消える???1日つけっぱなしにしていたら消えていた。やっぱりデーターがなくても2台のディスクを同期するために時間が掛かるんだ
buffaloがbaffloになっていたので修正(2013/05/23)

まずはクローンを作るが、どういう方法にするか?
1:壊れた方のディスクのクローンを作り、raid0を復活させる。
2:壊れたディスクもそのままに、raid0のクローンを作る。(つまり壊れているraid0)
結論からいうと後者で何とかなった。
まずは順当に DDコマンドで(参考:ここらあたりがいいかな)でraid0のクローンを作る(この為2TBのディスクを買った)。色々やったがどうしてもスーパーブロックのエラーで修復出来なかった。途方に暮れ、色々ぐぐったら、世の中捨てたもんじゃない。偉い諸先輩が苦労していて、ddrescueなるコマンドがあることを知った。これに似たdd_rescueも有るが、色々検討の結果ddrescueの方が良さそう。(参考:ddresucueの解説)ダウンロードはここから ddrescue-1.8-3mdv2009.0.x86_64.rpm(私のCentOSは64bit環境)をダウンロードし、保存してあるディレクトリーに移り、
# rpm -Uvh ddrescue-1.8-3mdv2009.0.x86_64.rpm
でインストールする。
ddrescureはGUI環境ではないので、コマンドを打つしかない。
早速クローンを作成
# ddrescure /dev/md126 /dev/sde1 raid0.log
md126は壊れているraid0、sde1は新しく買った2TBのディスク、raid0.logはなんでも良い、この名前でログが作成される。
私の場合は16時間掛かっても終わらなかったので、ctrl+Cで強制終了。
約400GB弱が修復できず、残りは修復出来たみたい!!! 2TBは5ー6時間で終わったみたい、残りの時間はエラー修復の時間だと思う。
とはいえスーパーブロックが壊れている筈なので、
# xfs_repair /dev/sde1
とやったら前はPhase1でエラーが出ていたがここは通過し、Phase2でエラーが出た。これはいいぞ、で再度
# xfs_repair /dev/sde1
としたら、Phase7まで行って無事終了。バンザーイ
早速、マウントして中身を見る
# mount -t xfs /dev/sde1 /test1 test1は事前に作って置いたマウントポイント(場所はどこでもいい)
そうすると/test1直下にlost+foundというディレクトリーが出来て,その下に1495個のディレクトリーが(名前は数字の羅列)出来、その下にディレクトリーやファイルがある。これはルートのディレクトリーが壊れたので、パスが分からなくなったと思われる、ともかくディレクトリやファイルが修復されている。もっともディレクトリの中身が無い物もある。多分修復出来なかった部分だと思う。此所までくれば何とかなる。メデタシ、メデタシ
注:思い出しながら書いたので、抜けや勘違いがあるかも、気がついたら"お問い合わせ"から是非教えてください。
多分プロに頼んだらもっとデーターが修復できていると思う。ほぼ素人の私でも此所まで出来たのだから。
書いてしまうとこれだけだが、実際はゴールデンウィークの4日間を費している
(副題:raid0修復)

問題点:
1:このLink StationはRaid0になっており、その内の一台が壊れた。raid0だから修復できない
2:ファイルシステムに XFS を使用している。
一番の問題はraid0の内の一台のハードディスクのスーパーブロックが壊れ、全てがお釈迦になった。
反省: 今時ハードディスクも早くなっているし、容量もテラバイト時代である。raid0にする理由は無い。この故障の経験から、声を大にして叫びたい。raid1で組むべし。もし、raid0を使用しているなら、速やかにraid1に変更すること。(raid5よりraid1を薦める)
ここで終わっては意味がないので、修復を試みるが前途多難そう。その前に壊れたディスクを何とかしようと思っているあなた! 是非、ここを見て下さい。この記事の後ろのインタビューは絶対に参考になる。本当に大事なデーターなら、この記事にあるように何もせず、素直にプロに頼むこと。勿論それなりの費用は掛かる。
私は修復を試みたが、それは最悪データーが生き返らなくても、仕方が無いと覚悟したからである。
まずは記事にあるように、壊れたディスクをいじらない為にクローンを作る。
これにはLinuxがいい。私はCentOSのバージョン6.4(GUI環境)で作業した。私はCentOSがあるので使ったが、linuxを持っていなかったら、UbuntuやKNOPPIXをダウンロードして、使った方がいいと思う。
最初にCentOSはXFS ファイルシステムが扱えないので、システム→管理→ソフトウェアの追加/削除をクリックし、XFSで検索し、xfsprogsとxfsdumpをインストールして置く。
LinkStationからディスクを取り外し、CentOSのSATAに接続後ブートしたら、ディスクが壊れているので、ディスクが故障かも知れませんと表示され、右上のアイコンをクリックすると、故障しかけているディスクが表示され、そこをクリックするとディスクユーティリティーが表示された。故障しているディスクにフォーカスされているので、SMARTデータ(A)をクリックし、中身を見てみると、何と"Reallocated Sector Count"の値が4015セクターにもなっていた。これはおかしいし、大体代替のセクターがそんなにある筈もない。多分スーパーブロック(?)が壊れたので、おかしな事になっているのだろう。ファイルシステムがext3やext4なら予備のスーパーブロックを使ってmountする方法を知っているが、XFSのやりかたは知らない。大体スーパーブロックがあるかどうかも知らない。
(副題:raid0修復)下の写真はディスクユーティリティー等の画像

Centos 5.3の時はSquireelMailを使っていたが、今回はRoundcubeに挑戦してみる。
参考URL:http://unixlife.jp/unixlife/linux/s-roundcube.jsp
http://roundcube.net/download から complete: 0.8.6 をダウンロードする。
ダウンロードしたdirectoryに移り、
# tar -xzvf roundcubemail-0.8.6.tar.gz
次はwebにコピー
# mv roundcubemail-0.8.6/ WEBのルートディレクトリー
ディクトリー名が長すぎるので変更
# cd WEBのルートディレクトリー
# mv roundcubemail-0.8.6 webmail
所有者の変更
# chown -R root.apache webmail
.htaccessの削除
# rm webmail/.htaccess
足りないモジュールをインストール
# yum install php-xml php-intl php-gd
# cd
mysqlを使うのでその設定
# mysql -u root -pXXXXXX ←XXXXXXはパスワードで-pとの間にスペースを入れてはいけない。
mysql> create database webmail;
mysql> grant all privileges on webmail.* to webmail@localhost identified by 'XXXXXX;
mysql> exit
この意味は"webmail"というデーターベースを作り、その権利をwebmailと言うユーザーに与える。
テーブルをインポートする
# mysql -u root -pXXXXXX webmail < WEBのルート/webmail/SQL/mysql.initial.sql
apacheとmysqlをリスタートしておく
# service httpd restart
# service mysqld restart
localhost/webmail にブラウザでアクセスすると、画面1になる
画面1からはみ出して見えないが、PostgrelSQLが無いなどと言っているが、もちろんmysqlはOKなので問題無い。一番したに NEXTがあるのでクリックすると
画面2。これは webmail/config/main.inc.phpやdb.inc.phpを作ってくれるのも。かなり長いので、デフォルトから変更したものだけ記入する。
Product_name は Webmail だけにした。
Data base Setup はmysqlに設定したものを記入
IMAP Settingの(私はIMAPをsslで使っているので)
default_host は ssl://localhost
default_port は 993
username_domain は ブランク(これはログイン画面にドメイン名を表示してくれるが、私はvirtual mail で5個のドメインを使っているので設定しない)
SMTP Settings は(SMTPもssl)
smtp_server は ssl://localhost
smtp_port は 465
smtp_user/smtp_pass はブランクのままにして、use the current IMAP ...... にチェックを入れる。
CREATE CONFIG をクリックすると
画面3になり、設定文が表示される。2つの設定ファイルの上にdownload(画面3では紫色)があるのでここをクリックすると保存出来るようになるので、場所を指定し(WEBのルート/webmail/config)それぞれ保存する。CONTINEUE をクリックすると
画面4になるがエラーが出ている。
一番目の Missing config option はこのWEBに置いておくroundcubeのヘルプページのURLだが取りあえず置かないのでそのままにする。
二番目はdirectoryのパーミッションの問題。これを直す。
# chmod 775 WEBのルート/webmail/logs
# chmod 775 WEBのルート/webmail/temp
三番目はデータベースの設定でエラーが出ている(パスワードは白抜きしている)。良く見ると@localhost/webmai となっており最後がの l(エル)が抜けているので、 WEBのルート/webmail/config/db.inc.phpを編集する(25行目くらいの$rcmail_config['db_dsnw'] = で始まる所)。
ブラウザを再読み込みすると画面5になる。
相変わらずMissing config option が出ているが無視、スクロールダウンし(画面6)、Test SMTP config の所で、User: にメールユーザー、Password: にそのパスワード、送信者受信者ともそのユーザにして、Send test mail をクリックし、
画面7の赤のアンダーラインの様に SMTP send OK になればよい。
次は Test IMAP config の Username にメールユーザー、Password にそのパスワードを記入し、Check login をクリックすると、
画面8になり、赤いアンダーラインの様に IMAP connect: OK(SORT capability: yes) になればOK。
下の注意書きには installer folder をdeleteするか、enable_installer option を disableにしろとあるが、main.inc.php は $rcmail_config['enable_installer'] = false; となっていたので、そのままにした。
いよいよブラウザで localhost/webmail にアクセスすると、画面9になり、ログインすると画面10になる。
少し main.inc.php を手直しする(抜粋)
$rcmail_config['default_charset'] = 'ISO-2022-JP';
$rcmail_config['create_default_folders'] = true;
$rcmail_config['log_driver'] = 'syslog';
$rcmail_config['log_logins'] = true;
とそれぞれ右辺を変更する
WEBのルート/webmail/program/include/rcube_charset.phpの変更。
// 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);
}
後、ログイン後右上に設定があるので、一度見ておく方がいいと思います
OSはcentos 6.4
PhpMyAdminにログインすると、mcrypt 拡張がありません。PHP の設定をチェックしてみてください。とエラーが出るようになった。
確かインストールしている筈。WEBでphpinfoを見れるようにしてチェックすると、Additional .ini files parsed にはmycrypr.iniは表示されている。
色々ググると http://centossrv.com/patio/patio.cgi?read=2546&ukey=0 に回答があった。/etc/php.d/mrcrypt.iniが間違えているバグみたい。
; Enable mcrypt extension module
extension=mcrypt.so ←右辺を変更
に変更し、httpdをリスタートするとエラーは表示されなくなった。
再度phpinfoをチェックすると、以前には無かった、Registered Stream Filters にも mcrypt.* が表示されていた。

kvmでは /etc/libvirt/qemu 以下にあるゲスト名.xmlで割り当てる領域(disk)を定義するが、その挙動がよく解らないので調べてみた。
1:最初にゲストのインストレーションで指定をすると、必ず指定した領域にさらに領域を作る。例えばvdaに指定したものを、kvmホスト側から単純な方法ではマウント出来ない。CentOS 6.3に挑戦 : 10:ゲストの領域をマウントする場合を参照。例えばインストレーション時にvdaとvdbをそれぞれルートとスワップに指定してインストールすると、それぞれの領域にさらに領域を作り、そこにルートにするext4とswapを作っている。つまり指定された領域をdiskに見立てそこにパティションを作っている感じ。
2:インストールが終わってから/etc/libvirt/qemu/ゲスト名.xmlを修正し、vdcを追加後、virsh define /etc/libvirt/qemu/ゲスト名.xmlで再定義後、起動すると、その中には領域を作らない。
3:それではと、試しにゲストをシャットダウン後、swapに指定したvdbを mkswap /dev/Swap/testSwap(これがvdbに指定した領域)で、直接swap領域に作り直したが、swapとして認識してくれない。
4:仕方なくゲスト.xmlを修正し、vdbの代わりにvdcを指定(vdbはなくなった)し、vdcはvddにして、define後、起動しても認識してくれない。それどころか /devの中を見るとあるのは、vda,vda1(これが領域の中の領域ールートになっている),vdb, vdb1となっておりvddが無い所か、指定の無いvdbがある!!!???
vddが無くなっているので、fstabで指定のある/dev/vddの部分はエラーになる。詰まりvdb等の最後のアルファベッドはxmlの指定に関わらず、aから順番に付く!!
もちろん全体を再起動しても同じ現象!
5:.xmlの指定はswapにする領域の指定はvdbに戻し、ゲストの /etc/fstab の指定を /dev/sdb swap swap defaults 0 0 にしたらOKになった。
今もって何だかよく分からない。どなたか詳しい方是非教えてください。

会社などでその部署のメアドを作り、その部署全員に転送するような事をやると思いますが、 25:postfixadminのインストールでは出来ませんでした。転送設定はあるのですが、それはドメイン毎の転送で、メアドの転送設定は出来ませんでした。
ググって見ると何の事は無く、config.inc.php に一つ設定するだけで出来るようになります。
$CONF['alias_control'] = ‘YES’
設定後、WEBサーバーを再起動し、postfixadminに再ログインすれば、各メアドの設定に"転送"が表示されますので、そこに転送したいメアドを追加するだけ。デフォルトで自分自身に転送がされているが、メールの保存の必要が無ければ、自分自身は消去してもいい。

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
参考URL:http://www.kurobuti.com/linux_server/?page_id=364
動いていますが色々な修正をして行ったので、ここに設定が反映していないとも限りません。どなたか気がついたら、お問い合わせからお知らせ下さい。又、Mailを保存するディレクトリーを変更しました。
/etc/php.ini を変更して置きます(これはpostfixadminとは直接関係ありません。)
date.timezone = Asia/Tokyo ←東京にする
post_max_size = 50M
upload_max_filesize = 50M
今のままではユーザー名が同じだと、各バーチャルドメインで同じ人になってしまう(test@domain1.comとtest@domain22.comは同じ人)ので作り直す
先ずはバーチャルドメイン用のユーザーを作る。
# groupadd -g 10000 vusers
# useradd -g 10000 -u 10000 vusers
mailを保存するディレクトリー作ってあるので(これには独立したディスク領域を割り当てています。fstabの内容:/dev/vde /Maildata ext4 defaults 0 0)オーナー等を設定
# chown vusers:vusers /Maildata
# chmod 770 /Maildata
postfixadminでmysqlを使うので、/etc/postfix/mysql_virtual_alias_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
#query= SELECT goto FROM alias WHERE address='%s'
table = alias
select_field = goto
where_field = address
以前はコメントアウトしてある行の様にmysqlのqueryを一行で書いていたのだが、変更になったのかなー。ともかく参考URL通りにした。
/etc/postfix/mysql_virtual_domains_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'
/etc/postfix/mysql_virtual_mailbox_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
/etc/postfix/mysql_sender_login_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
query= SELECT goto FROM alias WHERE address='%s'
/etc/postfix/virtualの編集
22:メールサーバーのバーチャルドメイン設定で設定した物を全てコメントアウトする
#172club.net anything
#@172club.net @kinryokai.net
次に/etc/postfix/main.cfの編集をする
#mydestination = $myhostname, localhost.$mydomain, localhost ←コメントアウトする
mydestination = ←追記
#virtual_maps = hash:/etc/postfix/virtual ←あれば、コメントアウトする
# local_transport = local ←コメントアウト
local_transport = virtual ←追記
#smtpd_sasl_local_domain = $myhostname ←コメントアウト
smtpd_sasl_path = private/auth ←追記
# ここから最後まで追記
# virtual_mailbox_domains の配送にバーチャル配送エージェントを使用
virtual_transport = virtual
# バーチャルメールボックスの場所
virtual_mailbox_base = /Maildata
# バーチャルメールボックスを使用するドメインの検索テーブル
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# バーチャルメールボックスを使用するメールボックスのアドレス検索テーブル
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# ローカルまたはバーチャルのエイリアス設定
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# ローカルまたはバーチャルのエイリアスされるドメイン
virtual_alias_domains = $virtual_alias_maps
# ユーザーIDの最小値
virtual_minimum_uid = 10000
# ユーザーID
virtual_uid_maps = static:10000
# グループID
virtual_gid_maps = static:10000
virtual_mailbox_limit = 1073741824
smtpd_sender_login_maps = mysql:/etc/postfix/mysql_sender_login_maps.cf
postfixadminを使うにはmysqlを有効にしたpostfixが必要だが、
24:taRgreyによるスパム対策(taRgrey)で使用したSRPMはmysqlが有効になっている
httpd php php-mysql php-mbstring dovecot-mysql がいるので無ければyumでインストール。
postfixadminのインストール(2013年2月23日現在2.3.6が最終バージョン)
http://sourceforge.net/projects/postfixadmin/ で確認してね。
# wget http://sourceforge.net/projects/postfixadmin/files/latest/download?_test=redirect
postfixadminがmysqlを使うのでデーターベースを作る。
# mysql -u root -pXXXXX
最後のXXXXXはログインするユーザーのパスワード。この時-pとパスワードの間にスペースを入れてはいけない。
postfixと言う名前でデーターベースを作る
mysql> create database postfix;
データーベースpostfixに使用するユーザーをpostfixadminとして作成し、全ての権限を与える。
mysql> grant all privileges on postfix.* to postfixadmin@localhost identified by 'postfixadminのパスワード';
データーベース(show databases)やuser(select user from mysql.user where user="postfixadmin";)が出来たか確認後、mysqlを抜ける
mysql> exit
作ったユーザーでmysqlにログイン出来るか確認
# mysql -u postfixadmin -pXXXXX
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 65
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
出来たのでmysqlを抜けておく。
postfixadminの解凍
# tar zxvf postfixadmin-2.3.6.tar.gz
出来たDIRをrename
# mv postfixadmin-2.3.6 postfixadmin
それをWEBサーバーのデーターDIRに移動
# mv postfixadmin /webdata/public/kinryokai/
私はdefault(/var/www/html)から変えている。
postfixadminのパーミッションの変更
# cd /webdata/public/kinryokai/
# chown -R apache:apache postfixadmin/
# cd postfixadmin/
# chmod 640 *.php
# cd admin/
# chmod 640 *.php
# cd ../images/
# chmod 640 *.png
# cd ../languages/
# chmod 640 *.lang
# cd ../users/
# chmod 640 *.php
# cd ..
config.inc.phpファイルの設定
$CONF['configured'] = true; ←trueに変更
$CONF['default_language'] = 'ja'; ←jaに変更
$CONF['database_user'] = 'postfixadmin'; ←設定したデーターベースと合わせる
$CONF['database_password'] = 'xxxx'; ←設定したデーターベースと合わせる
$CONF['database_name'] = 'postfix'; ←設定したデーターベースと合わせる
$CONF['admin_email'] = 'postmaster@kinryokai.net'; ←管理者のemail
$CONF['encrypt'] = 'cleartext'; ←mysqlを使うときはcleartextしか使えない
$CONF['domain_path'] = 'YES'; ←YESに変更
$CONF['mailboxes'] = '100'; ←100に変更
$CONF['maxquota'] = '10000'; ←10000に変更
$CONF['show_footer_text'] = 'NO'; ←NOに変更
$CONF['welcome_text'] = <<<EOM
このメールは管理者があなたのメアドを作成しましたので、送信をしました。
EOM; ←日本語に変更
/etc/dovecot/dovecot-postfixadmin-mysql.confを作る
driver = mysql
connect = host=localhost dbname=postfix user=postfixadmin password=XXXXXXXX
default_pass_scheme = PLAIN
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/Maildata/', maildir) AS home, 10000 AS uid, \
10000 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
/etc/dovecot/conf.d/00-base.confの作成
# debug関係
auth_debug_passwords = yes
auth_verbose = yes
auth_debug = yes
listen = *
disable_plaintext_auth = no
auth_mechanisms = PLAIN LOGIN CRAM-MD5
mail_location = maildir:/Maildata/%d/%u 最後を%nから%uに訂正-2012-10-31 中村さん御指摘ありがとうございます。
first_valid_uid = 10000
first_valid_gid = 10000
mail_plugins = quota
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
mail_plugins = $mail_plugins imap_quota
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
passdb {
driver = sql
args = /etc/dovecot/dovecot-postfixadmin-mysql.conf
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-postfixadmin-mysql.conf
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
plugin {
quota = maildir:User quota
}
/etc/dovecot/conf.d/10-auth.confの設定
disable_plaintext_auth = no ←コメントを外す
#!include auth-system.conf.ext ←#を付けコメントにする
/etc/dovecot/conf.d/10-mail.confの設定
mail_location = maildir:/Maildata/%d/%n ←右辺を訂正
/etc/sasl2/smtpd.confの設定
#pwcheck_method: saslauthd
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfixadmin
sql_passwd: XXXXX
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r' AND \
active = '1' mech_list: cram-md5 digest-md5 plain
login log_level: 3
/etc/procmailrc変更
MAILDIR=/Maildata/$DOMAIN/$USER\@$DOMAIN/ ←メールDIRの場所が変更になるので反映させる
webにnoticeが表示されるので、textファイルの名前を変更しておく。
# cd positfixadminのあるdirectory
# mv motd.txt motd.txt.org
# mv motd-users.txt motd-users.txt.org
ブラウザでIPアドレス/postfixadmin/setup.phpにアクセスする


私は左の図の赤線があるIMAP FunctionsがOKになっていますが、これはph

その後ブラウザで再読み込みすると、右の図の様になります。
Setup passwordにに任意のパスワードを入力し、"Generate password hash"をクリックすると、右下の画面になりますので、赤線を引いてあるHASH値がありますので、config.inc.phpに張り付けます。下のハッシュ値は画面とは違いますがあしからず。図と文字がオーバーラップして見づらくなった時はブラウザの表示幅を狭くしていくと、オーバーラップが解消します。
$CONF['setup_password'] = '83a9a0c889b7a4d1b6179462ba38c0d3:7704bbc36ee2098e6bdaddc430910f2abc57b55c';
そして、”Setup password" に設定したパスワードを入力、ドメイン管理者のメアド、ISP等のこのメールサーバー以外のメアドが良い。そしてパスワードを設定し、”管理者を追加”をクリックし管理者を作ります。WEBの下の方に書いてありますがVer2.3からsetup.phpはdeleteしなくてもよくなった見たいですが、私はパスワードを記憶させてしまいましたので、このままでは新しい管理者を作られ、問題がありますのでsetup.phpをリネームしました。
そして、ブラウザでhttp://IPアドレス/postfixadmin/login.php にアクセスし、作成した管理者でログインできる事を確認して置きます。
ドメインやメールユーザーの追加をして行く時に注意:ドメインを作っただけでは/home/vusersに下にドメインのDIRは出来ません。そのドメインにメールユーザーを作るとその時初めてドメインのDIRが出来、その下にユーザーが出来ます。
又、サンダーバードでメールをimapで使っていて気がついたのは、初期設定では下書きと迷惑メールのDIRは出来ないが、それぞれ、作成メールを保存した時、アカウント設定で迷惑メールと....にチェックを入れ、次のアカウントの迷惑メール.....にチェックを入れると作られる。
後日、作り直そうと思ってこのページを参考にしたが、ログインは出きるもののエラーが出る。原因は以前に作ったdatabaseが残っていた為。mysqlのpostfix(database名)を削除してからやると問題ない。
又、postfixadminでメールやドメインを削除しても、mysql上にあるデータが削除されるだけで、実態のメールデーターなどは削除されないので、必要ならばマニュアル削除する。(以前はpostfixadmin-domain-postdeletion.sh等を設定してあったが、テストしたらエラーが出たので、手動にした)
テストが終了したら、以前に作っていたskel directoryに入れたMaildirを消して、ユーザーを作成してもdirectoryを作らないようにする。その人がメールアドレスがいる時はpostfixadminで作成する
# rm -rf /etc/skel/Maildir/
さらにメールデーターの移行が終わったら、各ユーザー直下のMaildirもdeleteしておく。