Postfix:DebianでさらからMailJailの環境を作る

postfix-mysqlパッケージインストール。MySQLはインストール済み。

hdknr@deb09:~$ sudo aptitude install postfix-mysql -y
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています… 完了
タスクの記述を読み込んでいます… 完了
以下のパッケージは依存関係が壊れています:
  exim4 exim4-config
以下の新規パッケージがインストールされます:
  postfix{a} postfix-mysql
以下のパッケージが削除されます:
  exim4-daemon-light{a}
更新: 0 個、新規インストール: 2 個、削除: 1 個、保留: 0 個。
1267kB のアーカイブを取得する必要があります。展開後に 1966kB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
  exim4-config: 競合: postfix [2.5.5-1.1 がインストール予定となっています]
  exim4: 依存: exim4-daemon-light [インストール不能です] または
                 exim4-daemon-heavy [インストール不能です] または
                 exim4-daemon-custom[仮想パッケージです]
以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージを削除する:
exim4
exim4-base
exim4-config

スコアは -829 です

拡張状態情報を書き込んでいます… 完了
取得:1 http://ftp.jp.debian.org lenny/main postfix 2.5.5-1.1 [1224kB]
exim4 を削除しています …
dpkg: exim4-config: 依存関係に問題があります。しかし要求に従い削除しています:
exim4-base は以下に依存 (depends) します: exim4-config (>= 4.30) | exim4-config-2 …しか し:
  パッケージ exim4-config は削除されようとしています。
  パッケージ exim4-config-2 はまだインストールされていません。
  パッケージ exim4-config は exim4-config-2 を提供していますが、削除されようとしています。
exim4-base は以下に依存 (depends) します: exim4-config (>= 4.30) | exim4-config-2 …しか し:
  パッケージ exim4-config は削除されようとしています。
  パッケージ exim4-config-2 はまだインストールされていません。
  パッケージ exim4-config は exim4-config-2 を提供していますが、削除されようとしています。
exim4-config を削除しています …
dpkg: exim4-daemon-light: 依存関係に問題があります。しかし要求に従い削除しています:
bsd-mailx は以下に依存 (depends) します: exim4 | mail-transport-agent …しかし:
  パッケージ exim4 はまだインストールされていません。
  パッケージ mail-transport-agent はまだインストールされていません。
  パッケージ exim4-daemon-light は mail-transport-agent を提供していますが、削除されようと しています。
exim4-daemon-light を削除しています …
Stopping MTA: exim4_listener.
exim4-base を削除しています …
man-db のトリガを処理しています …
doc-base のトリガを処理しています …
Processing 3 removed doc-base file(s)…
未選択パッケージ postfix を選択しています。
(データベースを読み込んでいます … 現在 61058 個のファイルとディレクトリがインストールされています。)
(…/postfix_2.5.5-1.1_i386.deb から) postfix を展開しています…
未選択パッケージ postfix-mysql を選択しています。
(…/postfix-mysql_2.5.5-1.1_i386.deb から) postfix-mysql を展開しています…
man-db のトリガを処理しています …
postfix (2.5.5-1.1) を設定しています …
Adding group `postfix’ (GID 111) …
終了。
Adding system user `postfix’ (UID 107) …
Adding new user `postfix’ (UID 107) with group `postfix’ …
Not creating home directory `/var/spool/postfix’.
Creating /etc/postfix/dynamicmaps.cf
Adding tcp map entry to /etc/postfix/dynamicmaps.cf
Adding group `postdrop’ (GID 112) …
終了。
setting myhostname: deb09.hdknr.local
setting alias maps
setting alias database
changing /etc/mailname to deb09.hdknr.loc
setting myorigin
setting destinations: deb09.hdknr.loc, deb09.hdknr.local, localhost.hdknr.local, localhost
setting relayhost:
setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
setting mailbox_size_limit: 0
setting recipient_delimiter: +
setting inet_interfaces: all

Postfix is now set up with a default configuration.  If you need to make
changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run ‘/etc/init.d/postfix reload’.

Running newaliases
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
postfix-mysql (2.5.5-1.1) を設定しています …
Adding mysql map entry to /etc/postfix/dynamicmaps.cf
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています… 完了
拡張状態情報を書き込んでいます… 完了
タスクの記述を読み込んでいます… 完了

Postfix Adminをダウンロード

hdknr@deb09:~$ wget http://downloads.sourceforge.net/postfixadmin/postfixadmin-2.3beta.tar.gz?use_mirror=jaist
–2009-03-09 01:22:34–  http://downloads.sourceforge.net/postfixadmin/postfixadmin-2.3beta.tar.gz?use_mirror=jaist
downloads.sourceforge.net をDNSに問いあわせています… 216.34.181.60
downloads.sourceforge.net|216.34.181.60|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 302 Found
場所: http://jaist.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-2.3beta.tar.gz [続く]
–2009-03-09 01:22:35–  http://jaist.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-2.3beta.tar.gz
jaist.dl.sourceforge.net をDNSに問いあわせています… 150.65.7.130
jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 992514 (969K) [application/x-gzip]
`postfixadmin-2.3beta.tar.gz’ に保存中

100%[=================================================>] 992,514      511K/s 時間 1.9s

2009-03-09 01:22:37 (511 KB/s) – `postfixadmin-2.3beta.tar.gz’ へ保存完了 [992514/992514]

hdknr@deb09:~$ tar xvfz postfixadmin-2.3beta.tar.gz

mvする。

hdknr@deb09:~/hdknr.vpc$ ls -al
合計 36
drwxr-xr-x  9 hdknr    hdknr    4096 2009-03-09 01:29 .
drwxr-xr-x 28 hdknr    hdknr    4096 2009-03-09 01:30 ..
drwxr-xr-x  2 hdknr    hdknr    4096 2009-03-09 01:30 etc
drwxr-xr-x  2 hdknr    hdknr    4096 2009-02-05 14:09 logs
drwxr-xr-x 12 hdknr    hdknr    4096 2009-03-09 01:26 postfixadmin-2.3beta
drwxr-xr-x  2 hdknr    hdknr    4096 2009-02-10 02:22 www

apache設定

hdknr@deb09:~/hdknr.vpc$ vi etc/httpd.conf

<VirtualHost *:80>
    ServerAdmin webmaster@debian.hdknr
    DocumentRoot /home/hdknr/hdknr.vpc/www
    ServerName hdknr.vpc:80
     ErrorLog  /home/hdknr/hdknr.vpc/logs/error.log
     LogLevel warn
     CustomLog /home/hdknr/hdknr.vpc/logs/access.log combined

    Alias   /postfixadmin/  /home/hdknr/hdknr.vpc/postfixadmin-2.3beta/

</VirtualHost>

データベース作成

hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ echo "create database postfix" | sudo mysql
hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ echo "grant all privileges on postfix.* to ‘postfix’@’localhost’ identified by ‘postfix’" | sudo mysql

hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ echo "show variables like ‘char%’" | mysql -u postfix postfix -p -t
Enter password:
+————————–+—————————-+
| Variable_name            | Value                      |
+————————–+—————————-+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+————————–+—————————-+

PostfixAdmin構成

hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ vi config.inc.php
hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ grep hdknr config.inc.php
$CONF[‘admin_email’] = ‘postmaster@hdknr.vpc’;
$CONF[‘configured’] = true;     //hdknr.vpc
$CONF[‘default_language’] = ‘ja’;   //hdknr.vpc
$CONF[‘database_password’] = ‘postfix’; //hdknr.vpc
$CONF[‘admin_email’] = ‘postmaster@hdknr.vpc’;
    ‘abuse’ => ‘abuse@hdknr.vpc’,
    ‘hostmaster’ => ‘hostmaster@hdknr.vpc’,
    ‘postmaster’ => ‘postmaster@hdknr.vpc’,
    ‘webmaster’ => ‘webmaster@hdknr.vpc’
$CONF[‘vacation_domain’] = ‘autoreply.hdknr.vpc’;
$CONF[‘user_footer_link’] = "http://hdknr.vpc/postfixadmin/main";
$CONF[‘footer_text’] = ‘Return to hdknr.vpc’;
$CONF[‘footer_link’] = ‘http://hdknr.vpc/postfixadmin’;

hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ sudo /etc/init.d/apache2 restart
Restarting web server: apache2 … waiting .

setup.phpを動かしてAdmin追加してsetup.phpを削除

hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ mv setup.php  .setup

確認

hdknr@deb09:~/hdknr.vpc/postfixadmin-2.3beta$ echo "show tables" | mysql -u postfix postfix -p -t
Enter password:
+———————–+
| Tables_in_postfix     |
+———————–+
| admin                 |
| alias                 |
| alias_domain          |
| config                |
| domain                |
| domain_admins         |
| fetchmail             |
| log                   |
| mailbox               |
| vacation              |
| vacation_notification |
+———————–+

postfix-mysqlの設定

deb09:/etc/postfix# svn export http://code.hdknr.com/Postfix/conf/MySQL
A    MySQL
A    MySQL/master.cf.sample
A    MySQL/mysql
A    MySQL/mysql/virtual_alias_maps.cf
A    MySQL/mysql/virtual_domains_maps.cf
A    MySQL/mysql/virtual_mailbox_maps.cf
A    MySQL/mysql/virtual_transport_maps.cf
A    MySQL/main.cf.sample
A    MySQL/virtual-rwp
Exported revision 35.

deb09:/etc/postfix# dig +short mx hdknr.vpc
10 mail.hdknr.vpc.
10 hdknr.vpc.
deb09:/etc/postfix# dig +short mail.hdknr.vpc
192.168.250.111
deb09:/etc/postfix# dig +short hdknr.vpc
192.168.250.111
deb09:/etc/postfix# ifconfig | grep 192
          inet addr:192.168.131.66  Bcast:192.168.131.255  Mask:255.255.255.0
          inet addr:192.168.250.111  Bcast:192.168.250.255  Mask:255.255.255.0

メールボックスユーザー作成

deb09:/etc/postfix# addgroup –gid 10000 mbox
Adding group `mbox’ (GID 10000) …
Done.

deb09:/etc/postfix# adduser –gid 10000 –uid 10000 mbox
Adding user `mbox’ …
Adding new user `mbox’ (10000) with group `mbox’ …
Creating home directory `/home/mbox’ …
Copying files from `/etc/skel’ …

deb09:/etc/postfix# su – mbox
mbox@deb09:~$ mkdir user
mbox@deb09:~$ exit
logout

うまくいかない。。。。。

deb09:/etc/postfix/MySQL/mysql# !ta
tail -f /var/log/mail.err
\/etc/postfix/MySQL/mysql/virtual_alias_maps.cf: bad string length 0 < 1: where_field =
Mar  9 02:47:17 deb09 postfix/smtpd[5197]: fatal: /etc/postfix/MySQL/mysql/virtual_alias_maps.cf: bad string length 0 < 1: where_field =
Mar  9 02:48:18 deb09 postfix/trivial-rewrite[5207]: fatal: mysql:/etc/postfix/MySQL/mysql/virtual_alias_maps.cf(0,lock|fold_fix): table lookup problem
Mar  9 02:48:20 deb09 postfix/trivial-rewrite[5208]: fatal: mysql:/etc/postfix/MySQL/mysql/virtual_alias_maps.cf(0,lock|fold_fix): table lookup problem

http://hidelafoglia.livejournal.com/77380.html ではまった!

 

Jail用のテストドメイン。@hdknr.testあてのメールをすべてスクリプトに食わす。 

deb09:/etc/postfix# echo "insert domain (domain,transport) values(‘hdknr.test’,’mailjail’)" | mysql postfix
+————+————-+———+———–+———-+——-+———–+———-+———————+———————+——–+
| domain     | description | aliases | mailboxes | maxquota | quota | transport | backupmx | created             | modified            | active |
+————+————-+———+———–+———-+——-+———–+———-+———————+———————+——–+
| ALL        |             |       0 |         0 |        0 |     0 |           |        0 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |
| hdknr.vpc  |             |      10 |        10 |       10 |     0 | virtual   |        0 | 2009-03-09 02:13:56 | 2009-03-09 02:13:56 |      1 |
| hdknr.test |             |       0 |         0 |        0 |     0 | mailjail  |        0 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |
+————+————-+———+———–+———-+——-+———–+———-+———————+———————+——–+

Postfixにvirtualの追加

deb09:/etc/postfix# more virtual-test
@hdknr.test     mailjail@mailjail.local
deb09:/etc/postfix# postmap virtual-test
deb09:/etc/postfix# vi main.cf
virtual_transport=proxy:mysql:/etc/postfix/MySQL/mysql/virtual_transport_maps.cf,hashi:/etc/postfix/virtual-test

master.cfにmailjailトランスポートを追加

deb09:/etc/postfix# vi master.cf
#
mailjail unix – n n – – pipe
  flags=FDRq user=hdknr argv=/home/hdknr/mailjail/mailjail.py $sender $recipient

処理スクリプトを作成

hdknr@deb09:~/mailjail$ more mailjail.py
#!/usr/bin/python
# /etc/postfix/master.cf
#mailjail unix - n n - - pipe
#  flags=FDRq user=_user_ argv=/home/_user_/mailjail/mailjail.py $sender $recipient
# 

import sys,os
import time 

DIR=os.path.abspath(os.path.dirname(__file__))+"/mail" 

if False == os.path.isdir(DIR):
   os.mkdir(DIR) 

def main():
  (sender,receipient)=('from','to')
  if len(sys.argv) > 1:
    sender=sys.argv[1]
    if len(sys.argv)> 2:
       receipient = sys.argv[2]
  filename = sender + "-" + receipient+'-'+time.strftime('%Y%m%dT%H%M%S',time.localtime())
+ ".eml" 

  if sys.stdin.isatty():
    print "*** NO STDIN ***"
    return 

  f=open(DIR+'/'+filename,'w')
  if None != f:
    f.writelines(sys.stdin.readlines())
    f.close() 

if __name__ == '__main__':
  main() 

Postfix再起動して動作確認。

deb09:~# /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.

hdknr@deb09:~/mailjail$ echo "fdsafdsafa" | mail -s "fdaf" test@hdknr.test

deb09:~# tail -f /var/log/mail.info
Mar  9 03:25:55 deb09 postfix/smtpd[5724]: disconnect from localhost[127.0.0.1]
Mar  9 03:25:55 deb09 postfix/virtual[5731]: 76FEE1DD5AC: to=<test2@hdknr.vpc>, relay=virtual, delay=0.11, delays=0.04/0.03/0/0.04, dsn=2.0.0, status=sent (delivered to maildir)
Mar  9 03:25:55 deb09 postfix/qmgr[5721]: 76FEE1DD5AC: removed
Mar  9 04:02:53 deb09 postfix/master[5719]: terminating on signal 15
Mar  9 04:02:53 deb09 postfix/master[6011]: daemon started — version 2.5.5, configuration /etc/postfix
Mar  9 04:03:19 deb09 postfix/pickup[6012]: B2C391DD5AF: uid=1000 from=<hdknr>
Mar  9 04:03:19 deb09 postfix/cleanup[6020]: B2C391DD5AF: message-id=<20090308190319.B2C391DD5AF@deb09.hdknr.local>
Mar  9 04:03:19 deb09 postfix/qmgr[6013]: B2C391DD5AF: from=<hdknr@deb09.hdknr.loc>, size=308, nrcpt=1 (queue active)
Mar  9 04:03:19 deb09 postfix/pipe[6023]: B2C391DD5AF: to=<test@hdknr.test>, relay=mailjail, delay=0.24, delays=0.19/0.03/0/0.02, dsn=2.0.0, status=sent (delivered via mailjail service)
Mar  9 04:03:19 deb09 postfix/qmgr[6013]: B2C391DD5AF: removed

hdknr@deb09:~/mailjail$ ls mail/
hdknr@deb09.hdknr.loc-test@hdknr.test-20090309T040319.eml

hdknr@deb09:~/mailjail$ more mail/hdknr@deb09.hdknr.loc-test@hdknr.test-20090309T040319.eml
From hdknr@deb09.hdknr.loc  Mon Mar  9 04:03:19 2009
Return-Path: <hdknr@deb09.hdknr.loc>
Delivered-To: test@hdknr.test
Received: by deb09.hdknr.local (Postfix, from userid 1000)
        id B2C391DD5AF; Mon,  9 Mar 2009 04:03:19 +0900 (JST)
To: test@hdknr.test
Subject: fdaf
Message-Id: <20090308190319.B2C391DD5AF@deb09.hdknr.local>
Date: Mon,  9 Mar 2009 04:03:19 +0900 (JST)
From: hdknr@deb09.hdknr.loc (hdknr)

fdsafdsafa

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中