Archive for 5月, 2010
□RoundCubeでWebMail(Vine5)
by admin on 5月.14, 2010, under MEMO
□RoundCubeでWebMail(Vine5)
↑ここに基本的なことは全て書いてある
http://oss.poyo.jp/roundcube-ja/
↑ここに日本語解説あり
このWebMailはMySQL対応なので、入っているとは思うけど
apt-get -y install MySQL-server MySQL-client MySQL-devel php5-mysql
はインストールすること。
肝心のRoundCubeはTARボールから展開。
cd /usr/src/package/
wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail-beta/0.4-beta/roundcubemail-0.4-beta.tar.gz?use_mirror=jaist
すると、roundcubemail-0.4-beta.tar.gz(バージョンによって違う)が
おとせるので、WebMailをしたいディレクトリで展開
cd /var/
tar xvzf /usr/src/package/roundcubemail-0.4-beta.tar.gz
mv ./roundcubemail-0.4-beta ./roundcube
展開されたディレクトリを見てみると
# ls -al ./roundcube
合計 112
drwxr-xr-x 11 keyword 80 4096 4月23日 17:32 ./
drwxr-xr-x 25 root root 4096 5月14日 11:17 ../
-rw-r–r– 1 keyword 80 1145 2月19日 03:09 .htaccess
-rw-r–r– 1 keyword 80 6821 4月23日 17:13 CHANGELOG
-rw-r–r– 1 keyword 80 8359 4月20日 16:26 INSTALL
-rw-r–r– 1 keyword 80 17987 10月30日 2008 LICENSE
-rw-r–r– 1 keyword 80 2132 4月23日 17:13 README
drwxr-xr-x 2 keyword 80 4096 5月14日 11:17 SQL/
-rw-r–r– 1 keyword 80 1052 4月15日 16:28 UPGRADING
drwxr-xr-x 2 keyword 80 4096 5月14日 11:17 bin/
drwxr-xr-x 2 keyword 80 4096 5月14日 11:17 config/
-rw-r–r– 1 keyword 80 9864 4月23日 17:13 index.php
drwxr-xr-x 3 keyword 80 4096 5月14日 11:17 installer/
drwxr-xr-x 2 keyword 80 4096 5月14日 11:17 logs/
drwxr-xr-x 24 keyword 80 4096 5月14日 11:17 plugins/
drwxr-xr-x 7 keyword 80 4096 5月14日 11:17 program/
-rw-r–r– 1 keyword 80 26 3月22日 2008 robots.txt
drwxr-xr-x 3 keyword 80 4096 5月14日 11:17 skins/
drwxr-xr-x 2 keyword 80 4096 5月14日 11:17 temp/
となっているので、この中のlogsとtempを誰でもかけるように
パーミッション変更
chmod 777 /var/roundcube/logs/ /var/roundcube/temp/
つづいてデータベースの設定。
mysql -u root -p
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO username@localhost IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
EXIT
として、データベースの作成とユーザー(もちろんusername, passwordは
変更すること)の登録をする。
そしたらあとは、このRoundCubeディレクトリへのURLの下のinstaller/に
アクセスして設定する。
http://test1.mydns.jp/roundcube/installer/
こんな画面が出てくればOK。

/etc/php5/php.iniのfile_uploadsとかsession.auto_startが上記で
指定されている値になっているか確認すること。
で、次のページに行くと

自分の場合、McryptとSQLiteが入っていなかったので、インストールした。
apt-get -y install libmcrypt php5-mcrypt
さらに、date.timezoneが設定されていないということなので、これもphp.ini
で設定した。
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = “Asia/Tokyo”
SQLiteは使わないので無視。
で、このページを再読み込みすると、OKとなる。
MySQLを使うので、真ん中あたりの「Database setup」のところを変更すること。
また「Display settings & user prefs」のlanguageはこまるところだが、
とりあえず「ja_JP」にしてみた。
これで設定を生成すると、main.inc.phpとdb.inc.phpをダウンロードして
/var/roundcube/config/にアップロードしろ、とでるのですること。

そしたら真ん中あたりの[CONTINUE]ボタンを押すと、アップロードがちゃんと
できていたら以下のような画面になる。

で、DB Schema: NOT OKとなっているが、これは[Initialize Database]を
おせばOKとなる。

必要に応じてSMTPとIMAPのテストをして、OKならこの installer/自体を
ばっさり削除すればOK。
で、あとはhttp://test1.mydns.jp/roundcube/にあくせすすれば、RoundCube
を使えるようになる。
ファンタスティーック!!
□Courier-MTA+PostgreSQL(Vine5)
by admin on 5月.13, 2010, under MEMO
□Courier-MTA+PostgreSQL(Vine5)
http://vine.1-max.net/postfix-SMTP-Auth.html
↑ここに基本的なことは全て書いてある
http://park1.wakwak.com/~ima/freebsd_courierimap_postgresql.html
↑ここにPostgreSQLデータベースを利用した場合のことが書いてある
apt-get install -y courier-imap courier-authlib courier-authlib-devel courier-authlib-pgsql
としてインストールしたら
/etc/authlib/authpgsqlrc.dist
という設定ファイルの元ができているので、これをコピーする
cd /etc/authlib/
cp ./authpgsqlrc.dist ./authpgsqlrc
として、./authpgsqlrcをいじる。
パラメーターとしては
PGSQL_HOST pgsql.example.com
PGSQL_PORT 5400
PGSQL_USERNAME admin
PGSQL_PASSWORD admin
PGSQL_DATABASE template1
PGSQL_USER_TABLE passwd
PGSQL_CRYPT_PWFIELD crypt
PGSQL_UID_FIELD uid
PGSQL_GID_FIELD gid
PGSQL_LOGIN_FIELD id
PGSQL_HOME_FIELD home
PGSQL_NAME_FIELD name
があるが、オプションパラメータとして
# PGSQL_CLEAR_PWFIELD clear
# PGSQL_MAILDIR_FIELD maildir
# PGSQL_DEFAULTDELIVERY defaultDelivery
# PGSQL_QUOTA_FIELD quota
:
:
こんなのもある。
とりあえず、ホストやポート番号を以下のように現状に合わせて
テーブル定義をきちんとする。
こんな感じでいかがでしょ?
create table mail_passwd_tbl
(
masterid text,
cryptpwd text,
clearpwd text,
mastername text,
masteruid integer,
mastergid integer,
masterhome text,
maildir text,
defaultdelivery text,
quote text,
registdate integer,
lastdate integer
);
create unique index mail_cryptpwd_index on mail_passwd_tbl (masterid, cryptpwd);
create unique index mail_clearpwd_index on mail_passwd_tbl (masterid, clearpwd);
grant all on mail_passwd_tbl to public;
これにあう./authpgsqlrcは
:
PGSQL_USER_TABLE mail_passwd_tbl
PGSQL_CRYPT_PWFIELD cryptpwd
PGSQL_UID_FIELD masteruid
PGSQL_GID_FIELD mastergid
PGSQL_LOGIN_FIELD masterid
PGSQL_HOME_FIELD masterhome
PGSQL_NAME_FIELD mastername
:
となる。
さらにコメントのままだけど
# PGSQL_CLEAR_PWFIELD clearpwd
としておくと、いざ平文パスワードにしたときにあわてなくていいかも。
(って平文パスワードにはしないだろうけど)
で、あとはPostgreSQLで認証させるために/etc/authlib/authdaemonrcのなかの
次のパラメータにauthpgsqlが書いてある事を確認する
emacs /etc/authlib/authdaemonrc
authmodulelist=”authpgsql”
authmodulelistorig=”authpgsql”
(他にもauthuserdbとかauthpamとか書いてあるはず)
確認したらcourier-imapとcourier-authlibの起動。
/etc/init.d/courier-authlib start
/etc/init.d/courier-imap start
として、エラーもなく、プロセスがいる事も確認。
# pgrep courier -l
9319 courierlogger
9451 couriertcpd
9453 courierlogger
9492 couriertcpd
9494 courierlogger
9498 couriertcpd
9500 courierlogger
9611 couriertcpd
9613 courierlogger
そうしたら、後は実際にユーザーを追加登録すればよい。
別途メモした「□Postfix+PostgreSQL(Vine)」と共に、hogehoge に対して
メールを送信して、実在しないhogehogeでメールが受信できる事を試して
みるといい。
例:
実在ユーザー(user00001)を追加する。
/usr/sbin/useradd user00001
パスワードは未設定の状態でためしにPOP3にアクセスしてもInvalidで
はじかれる。
つづいて転送用データと認証用データをインサートする。
INSERT into mail_alias_tbl VALUES
(
‘root’, ルートさんが登録しました
‘TEST’, グループとしてはテストです
‘hogehoge’, hogehoge宛のメールは
‘user00001′, user00001さんに転送します
0,
0
);
INSERT INTO mail_passwd_tbl VALUES
(
‘hogehoge’, hogehogeさんの認証用データで
‘$1$EGq5av3o$rVopfAi8sPbqHHSSo8vGV.’, 暗号化してあるパスワード
‘areare’,
‘TEST USER’,
’10001′,
’10001′,
‘/home/user00001/’,
‘/home/user00001/Maildir/’,
”,
”,
0,
0
);
ちなみにこれのパスワードはclearpwdに書いたようにareare。
PHPでコマンドラインでちゃちゃっと作れる。
userdbpwで作ってもいいけど短すぎるかと…
PHPの例:<? print crypt(“areare”); ?> →$1$EGq5av3o$rVopfAi8sPbqHHSSo8vGV.
userdbpwの例:→9T3u0YXzuFDNU
なにはともあれ、このデータをインサートしてから、テストメールを
送信して、さらにPOP3にアクセスすると、
# mail hogehoge
Subject: TEST MAIL
TEST MAIL.
.
Cc:
#
# tail -f /var/log/maillog
May 13 14:40:04 www postfix/qmgr[6124]: A96864464B6: removed
May 13 14:42:30 www postfix/postfix-script[15612]: stopping the Postfix mail system
May 13 14:42:31 www postfix/master[6121]: terminating on signal 15
May 13 14:42:31 www postfix/postfix-script[15705]: starting the Postfix mail system
May 13 14:42:31 www postfix/master[15706]: daemon started — version 2.6.3, configuration /etc/postfix
May 13 14:42:46 www postfix/pickup[15709]: CD81A4464B7: uid=0 from=<root>
May 13 14:42:46 www postfix/cleanup[15879]: CD81A4464B7: message-id=<20100513054246.CD81A4464B7@test1.mydns.jp>
May 13 14:42:46 www postfix/qmgr[15710]: CD81A4464B7: from=<root@test1.mydns.jp>, size=329, nrcpt=1 (queue active)
May 13 14:42:46 www postfix/local[15883]: CD81A4464B7: to=<user00001@test1.mydns.jp>, orig_to=<hogehoge>, relay=local, delay=0.22, delays=0.2/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to maildir)
May 13 14:42:46 www postfix/qmgr[15710]: CD81A4464B7: removed
#
# telnet localhost pop3
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
+OK Hello there. <bd911bbdd9e1726615c52bbd0de061fc>
user hogehoge
+OK Password required.
pass areare
+OK logged in.
LIST
+OK POP3 clients that break here, they violate STD53.
1 437
.
quit
+OK Bye-bye.
Connection closed by foreign host.
というように、実在しないユーザー宛にメールを送って、実在しない
ユーザーでPOP3接続してメールが取り出せる。
ワンダホー!!
□Postfix+PostgreSQL(Vine)
by admin on 5月.12, 2010, under MEMO
□Postfix+PostgreSQL(Vine)
http://www.postfix-jp.info/trans-2.1/jhtml/PGSQL_README.html
PostfixのvirtualマップをPostgreSQLに持たせてみる。
apt-get install -y postfix-pgsql
とすると、
/etc/postfix/dynamicmaps.cf
が追加されて読み込まれる。
インストールしたら/etc/postfix/main.cfに次のように書く
# aliasテーブルマップ
alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf
# virtualテーブルマップ
virtual_maps = pgsql:/etc/postfix/pgsql-virtual.cf
で、それぞれのの実際のファイルの書き方は
http://www.postfix-jp.info/trans-2.1/jhtml/pgsql_table.5.html
に書いてある。
必要なパラメータは
hosts = host1.some.domain host2.some.domain
user = someone
password = some_password
dbname = customer_database
table = mxaliases
select_field = forw_addr
where_field = alias
とあるが、PostgreSQLがわかっていないとなんのこっちゃとなるだろう。
そもそもはpostmapで以下のようにして、
> [root@yebisu ~]# postmap -q “hoge@example.jp” hash:/etc/postfix/alias
> user1234
実際の配送先を調べるだけなので、特にテーブルやフィールド名については
もう少し判りやすくしたほうがいいと思う。
発行されるSQLは
select [select_field] from [table] where [where_field] = ‘$lookup’ [additional_conditions]
ということなので、テーブル定義をきちんとしてあげるといいかな。
例:aliasテーブル
drop table mail_alias_tbl;
create table mail_alias_tbl
(
src_addr text,
dest_addr text,
registdate integer,
lastdate integer
);
create unique index mail_alias_index on html_tbl (src_addr, dest_addr);
grant all on mail_alias_tbl to public;
例:virtualテーブル
drop table mail_virtual_tbl;
create table mail_virtual_tbl
(
src_addr text,
dest_addr text,
registdate integer,
lastdate integer
);
create unique index mail_virtual_index on html_tbl (src_addr, dest_addr);
grant all on mail_virtual_tbl to public;
つまりaliasとかvirtualに書いてある
hoge@example.jp user1234
とか
example.jp anything
とかを、左をsrc_addr、右をdest_addrに入れてあげればいい。
つまり
aliasテーブルマップファイルには
table = mail_alias_tbl
select_field = dest_addr
where_field = src_addr
virtualテーブルマップファイルには
table = mail_virtual_tbl
select_field = dest_addr
where_field = src_addr
みたいな感じ。
んじゃregistdateとかlastdateってなによ、っていうのは、自分がテーブル
を作るときのお決まり項目で、初回登録日時と最終変更日時をここに入れる。
そんなわけて、他にもこれらのテーブルに項目として
登録した人のIDとして
masterid text,
とか、所属グループとして
group text,
(もちろんintegerでもchar()でもいいけど)みたいなのを追加しておくと、
メールシステムの管理の面からはだいぶ進んだものになると思う。
あとはこれを元にシステムを作ればいい…
って作ってるからこのメモができるわけだけど。(^-^;



