Linux Install Memo

Archive for 5月, 2010

□RoundCubeでWebMail(Vine5)

by on 5月.14, 2010, under MEMO

□RoundCubeでWebMail(Vine5)

http://roundcube.net/

↑ここに基本的なことは全て書いてある

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。

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

で、次のページに行くと

RoundCube002
自分の場合、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となる。


ので、次にいくと

RoundCube003
こんなページが出るので、ここでは必要に応じて変更すること。

MySQLを使うので、真ん中あたりの「Database setup」のところを変更すること。
また「Display settings & user prefs」のlanguageはこまるところだが、
とりあえず「ja_JP」にしてみた。

これで設定を生成すると、main.inc.phpとdb.inc.phpをダウンロードして
/var/roundcube/config/にアップロードしろ、とでるのですること。


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

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

RoundCube005-2
必要に応じてSMTPとIMAPのテストをして、OKならこの installer/自体を
ばっさり削除すればOK。

で、あとはhttp://test1.mydns.jp/roundcube/にあくせすすれば、RoundCube
を使えるようになる。

ファンタスティーック!!

Leave a Comment more...

□Courier-MTA+PostgreSQL(Vine5)

by 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接続してメールが取り出せる。

ワンダホー!!

Leave a Comment more...

□Postfix+PostgreSQL(Vine)

by 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()でもいいけど)みたいなのを追加しておくと、
メールシステムの管理の面からはだいぶ進んだものになると思う。

あとはこれを元にシステムを作ればいい…

って作ってるからこのメモができるわけだけど。(^-^;

Leave a Comment more...

何かお探しですか?

下記に探しているキーワードを入力してください:

ただし、もし探し物が見つからなくてもがっかりしないでください。
それは『あなたがドキュメントを作りなさい』というお告げなのです。

リンクリンクリンク!

きっとあなたにとって役立つリンクです...