hacks/mail/Postfix

2010年04月13日

[Postfix][MTA] 携帯キャリア向け配送制限設定

このエントリーをはてなブックマークに追加

キャリア別に同時接続数制限したい

キャリアのMTAに対して大量にメールを配送すると、接続一時拒否される事がある。
その対策の1つが、配送数制御。

▼検証環境

  • Fedora release 8
  • Postfix 2.5.5
作業内容

▼/etc/postfix/main.cf 必要に応じて修正

> transport_maps = hash:/etc/postfix/transport

▼/etc/postfix/master.cfに追記

> smtp-softbank.ne.jp unix -      -       n       -       1       smtp
>       -o smtp_destination_concurrency_limit=1
> smtp-ezweb.ne.jp    unix -      -       n       -       1       smtp
>       -o smtp_destination_concurrency_limit=1
> smtp-docomo.ne.jp   unix -      -       n       -       1       smtp
>       -o smtp_destination_concurrency_limit=1

▼/etc/postfix/transportに追記

> softbank.ne.jp  smtp-softbank.ne.jp:
> ezweb.ne.jp     smtp-ezweb.ne.jp:
> docomo.ne.jp    smtp-docomo.ne.jp:

▼transport.dbを構築

# cd /etc/postfix
# postmap transport

▼Postfixに設定を反映

# /etc/init.d/postfix reload

あとは日々ログを観察しつつ、
システムに似合ったsmtp_destination_concurrency_limitの設定値を割り出して行く。




半袖 at 16:10|PermalinkComments(0)TrackBack(0)

2008年10月03日

手頃なメールサーバを作る(Postfix+Dovecot+MySQL+Postfixadmin)

このエントリーをはてなブックマークに追加

改めてメールサーバ構築のまとめ


久しぶりにメールサーバの設定作業を行った。
自分自身の復習目的に、以前書いたメールサーバ構築関連エントリのまとめなおしてみた。
自宅や中小企業用にはこれで間に合うのではないだろうか。


メールサーバ構成概要


postadmin
主な機能
  • Submissionポート
  • SMTP-Auth
  • IMAP4
  • メールアカウント管理ツール
  • 複数バーチャルドメイン
前提条件として下記アプリケーションがインストール済みであるものとする

PostfixAdminの設定


環境概要

PostfixAdmindirectory/var/lib/postfixadmin/
URIhttp://postfixadmin.example.com/
Mailbox$(domain)/$(local-part)
MySQLdb_hostlocalhost
db_namepostfixadmin
db_userpostfix
db_pass********

ユーザー用Maildirディレクトリデザイン補足

今回、
  • 『$(local-part)@$(domain)』のメールボックスを、
  • 『$(domain)/$(local-part)』となるようにする
これは単にvpopmailの構成が好きだったから。

PostfixAdminで設定する。
設定すべき変数が下記2つ。
$CONF['domain_path']'NO'(無し)
'YES'$(domain)/
$CONF['domain_in_mailbox']'YES'$(local-part)@$(domain)
'NO'$(local-part)

今回の設定。
$CONF['domain_path']'YES'
$CONF['domain_in_mailbox']'NO'

作業内容

# mkdir -p /var/lib/postfixadmin
# cd /var/lib/postfixadminostfixadmin; pwd
/var/lib/postfixadmin
# wget http://downloads.sourceforge.net/postfixadmin/postfixadmin_2.2.0.tar.gz?modtime=1209482958&big_mirror=0
# tar zxvf postfixadmin_2.2.0.tar.gz
# ln -s postfixadmin-2.2.0 htdocs
Apacheのconfig生成
# cd /etc/httpd/conf/vhosts-available/; pwd
/etc/httpd/conf/vhosts-available
# vi postfixadmin.example.com
.....(省略).....

# cd ../; pwd
/etc/httpd/conf
# ln -s `pwd`/vhosts-available/postfixadmin.example.com `pwd`/vhosts-enabled/
問題なければ反映(reload)
# /usr/sbin/apachectl configtest
Syntax OK
# /etc/init.d/httpd reload
Reloading httpd:                                           [  OK  ]
ここではsetup.phpへアクセス出きることのみを確認。
→ http://postfixadmin.example.com/setup.php
※まだ設定途中なのでエラーが多々出る。

DBアクセス用アカウント作成
$ mysql -uroot
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY '********';
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
PostfixAdminの設定
# pwd
/var/lib/postfixadmin/htdocs
# cp -pi config.inc.php config.inc.php.0
# vi config.inc.php
# diff config.inc.php.0 config.inc.php
31c31
< $CONF['configured'] = false;
---

> $CONF['configured'] = true;
51,53c51,53
< $CONF['database_host'] = 'localhost';
< $CONF['database_user'] = 'postfixadmin';
< $CONF['database_password'] = 'postfixadmin';
---
> $CONF['database_host'] = 'localhost';
> $CONF['database_user'] = 'postfix';
> $CONF['database_password'] = '********';
123c123
< $CONF['domain_path'] = 'NO';
---
> $CONF['domain_path'] = 'YES';
129c129

< $CONF['domain_in_mailbox'] = 'YES';
---
> $CONF['domain_in_mailbox'] = 'NO';
再び http://postfixadmin.example.com/setup.php を確認。
  • 各項目がOKとなる事を確認。
  • 管理アカウント作成を要請されるので、管理アカウントを作成する。
  • この時点でPostfixAdminがtableを生成してくれる
設定内容に問題がなければsetup.phpをリネームする。
※ここでsetup.phpが残っていると管理画面へアクセス出来ない。
# mv -i setup.php setup.php.deleted
管理画面へアクセス出切る事を確認する。
→ http://postfixadmin.example.com/

この時点でドメインとメールアカウントの管理を行えるようになる。
しかし、まだメール配送(Postfix)の設定がない。


Postfixの設定


  • vpopmailの様なディレクトリ構成にする
  • SMTP-Authの認証はDovecotに任せる
  • Submissionポート(tcp/587)

設定概要

virtualドメイン用アカウントvpostmail(uid:12000,gid:12000)
スプールディレクトリ/var/lib/vpostmail/domain/
設定ファイル/var/lib/vpostmail/etc/*.cf


作業内容

masterにsubmissionポートを追加。
# cd /etc/postfix/
# vi master.cf
> submission inet n       -       n       -       -       smtpd
バーチャルドメイン用アカウント作成。
# /usr/sbin/useradd -u 12000 -s /bin/false vpostmail
バーチャルドメイン用にmain.cf修正
また、SASLの設定も追加する。
# pwd
/etc/postfix
# cp -pi main.cf main.cf.0
# vi main.cf
# diff main.cf.0 main.cf
> virtual_gid_maps = static:12000
> virtual_uid_maps = static:12000
> virtual_mailbox_limit   = 51200000
> virtual_minimum_uid     = 1001
> virtual_transport       = virtual
> virtual_mailbox_base    = /var/lib/vpostmail/domain
> virtual_mailbox_domains = mysql:/var/lib/vpostmail/etc/mysql_virtual_domains_maps.cf
> virtual_mailbox_maps    = mysql:/var/lib/vpostmail/etc/mysql_virtual_mailbox_maps.cf
> virtual_alias_maps      = mysql:/var/lib/vpostmail/etc/mysql_virtual_alias_maps.cf
>
> smtpd_sasl_auth_enable = yes
> smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
> smtpd_sasl_type = dovecot
> smtpd_sasl_path = private/auth
メールボックス用ディレクトリ。
今回は/var/lib/vpostmail/配下に作っていく。
# mkdir /var/lib/vpostmail/
# cd /var/lib/vpostmail/; pwd
/var/lib/vpostmail
# mkdir etc domain
vpostmailアカウントが
domainディレクトリにファイルを書き込むのでオーナーを変更する。
# chown vpostmail:vpostmail domain
Postfix-mysql用設定
# cd etc/; pwd
/var/lib/vpostmail/etc

# vi mysql_virtual_alias_maps.cf
user     = postfix
password = ********
hosts    = localhost
dbname   = postfix
query    = SELECT goto FROM alias WHERE address='%s'

# vi mysql_virtual_domains_maps.cf
user     = postfix
password = ********
hosts    = localhost
dbname   = postfix
query    = SELECT description FROM domain WHERE domain='%s'

# vi mysql_virtual_mailbox_maps.cf
user     = postfix
password = ********
hosts    = localhost
dbname   = postfix
query    = SELECT concat(maildir,'Maildir/') FROM mailbox WHERE username='%s'
/var/lib/vpostmail/domain/$(domain)/$(local-part)/Maildir/としたいので、
concatを用いて「Maildir/」を追加する。
これにより、後に設定するdovecotの管理が簡単になる。

etc配下のconfigにはMySQL用パスワードが載ってるので読めないようにする。
オーナーをpostfixへ変更。
# cd ../; pwd
/var/lib/vpostmail
# chown -R postfix:postfix etc/
# ls -ld etc/
drwx------  2 postfix postfix 4096 May  7 20:35 etc/
設定内容確認
# /etc/init.d/postfix check
問題なければ反映
# /etc/init.d/postfix reload
Reloading postfix:                                         [  OK  ]
送信テスト
$ telnet localhost 25
helo localhost
mail from:foo@example.net
rcpt to:bar@example.com
data
Subject: test

test
test
.
quit
ログ確認

# tail -F /var/log/maillog
.....
エラーが出てなければOK


Dovecotの設定


メールを受信

PostfixはMTAなので、POP3用サーバが別途必要。
今回はMySQLと連動叶なDovecotを使った。


設定概要

virtualドメイン用アカウントvpostmail(uid:12000,gid:12000)
スプールディレクトリ/var/lib/vpostmail/domain/$(domain)/$(local-part)/Maildir/
設定ファイル/etc/dovecot-mysql.conf



作業内容

dovecotをMySQL対応にする。
# yum install dovecot-mysql
dovecot.confの修正。
imapとpop3を使えるようにする。
結果的に設定ファイルはシンプルなものになった。
# cd /etc/; pwd
/etc
# cp -pi dovecot.conf dovecot.conf.0
# vi dovecot.conf
protocols = imap pop3

auth default {
  mechanisms = plain
  passdb pam {
  }
  passdb sql {
    args = /etc/dovecot-mysql.conf
  }
  userdb passwd {
  }
  userdb sql {
    args = /etc/dovecot-mysql.conf
  }
  user = root

  socket listen {
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}
MySQL用の設定。
※12000はvpostmailのuidとgid。
# cat /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=********
default_pass_scheme = MD5
user_query = SELECT concat('/var/lib/vpostmail/domain/', maildir) as home, 12000 as uid, 12000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = '1'

設定を反映させる
[root@www etc]# /etc/init.d/dovecot reload
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]
POPの確認
$ telnet localhost 25
user foo@example.com
pass ********
list
retr 1
.....
ここで認証が通れば問題なし。
複数バーチャルドメイン対応メール環境が出来上がった。


まとめ


  • この構成にはスパムメール対策がない事に気づいた
  • そのうちスパムメール対策も追加した物をまとめる…かも知れない




半袖 at 16:15|PermalinkComments(1)TrackBack(0)

2008年05月08日

RHEL4に[Postfix]+[Dovecot]+[PostfixAdmin]+[MySQL]環境構築(5/n) - Dovecotの設定

このエントリーをはてなブックマークに追加

メールを受信


PostfixはMTAなので、POP3用サーバが別途必要。
今回はMySQLと連動叶なDovecotを使った。



設定概要


virtualドメイン用アカウントvpostmail(uid:12000,gid:12000)
スプールディレクトリ/var/lib/vpostmail/domain/$(domain)/$(local-part)/Maildir/
設定ファイル/etc/dovecot-mysql.conf



作業内容


dovecotをMySQL対応にする。
# yum install dovecot-mysql
dovecot.confの修正。
imapとpop3を使えるようにする。
結果的に設定ファイルはシンプルなものになった。
# cd /etc/; pwd
/etc
# cp -pi dovecot.conf dovecot.conf.0
# vi dovecot.conf
protocols = imap pop3

auth default {
  mechanisms = plain
  passdb pam {
  }
  passdb sql {
    args = /etc/dovecot-mysql.conf
  }
  userdb passwd {
  }
  userdb sql {
    args = /etc/dovecot-mysql.conf
  }
  user = root
}
MySQL用の設定。
※12000はvpostmailのuidとgid。
# cat /etc/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=********
default_pass_scheme = MD5
user_query = SELECT concat('/var/lib/vpostmail/domain/', maildir) as home, 12000 as uid, 12000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = '1'
設定を反映させる
[root@www etc]# /etc/init.d/dovecot reload
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]
POPの確認
$ telnet localhost 25
user foo@example.com
pass ********
list
retr 1
.....
ここで認証が通れば問題なし。

複数バーチャルドメイン対応メール環境が出来上がった。



関連リンク




半袖 at 19:35|PermalinkComments(0)TrackBack(0)

RHEL4に[Postfix]+[Dovecot]+[PostfixAdmin]+[MySQL]環境構築(4/n) - Postfixの設定

このエントリーをはてなブックマークに追加

構成イメージはvpopmail


vpopmailの様なディレクトリ構成にする。



設定概要


virtualドメイン用アカウントvpostmail(uid:12000,gid:12000)
スプールディレクトリ/var/lib/vpostmail/domain/
設定ファイル/var/lib/vpostmail/etc/*.cf



作業内容


バーチャルドメイン用アカウント作成。
# /usr/sbin/useradd -u 12000 -s /bin/false vpostmail
バーチャルドメイン用にmain.cf修正
# pwd
/etc/postfix
# cp -pi main.cf main.cf.0
# vi main.cf
# diff main.cf.0 main.cf
> virtual_gid_maps = static:12000
> virtual_uid_maps = static:12000
> virtual_mailbox_limit   = 51200000
> virtual_minimum_uid     = 1001
> virtual_transport       = virtual
> virtual_mailbox_base    = /var/lib/vpostmail/domain
> virtual_mailbox_domains = mysql:/var/lib/vpostmail/etc/mysql_virtual_domains_maps.cf
> virtual_mailbox_maps    = mysql:/var/lib/vpostmail/etc/mysql_virtual_mailbox_maps.cf
> virtual_alias_maps      = mysql:/var/lib/vpostmail/etc/mysql_virtual_alias_maps.cf
メールボックス用ディレクトリ。
今回は/var/lib/vpostmail/配下に作っていく。
# mkdir /var/lib/vpostmail/
# cd /var/lib/vpostmail/; pwd
/var/lib/vpostmail
# mkdir etc domain
vpostmailアカウントが
domainディレクトリにファイルを書き込むのでオーナーを変更する。
# chown vpostmail:vpostmail domain
Postfix-mysql用設定
# cd etc/; pwd
/var/lib/vpostmail/etc

# vi mysql_virtual_alias_maps.cf
user     = postfix
password = ********
hosts    = localhost
dbname   = postfix
query    = SELECT goto FROM alias WHERE address='%s'

# vi mysql_virtual_domains_maps.cf
user     = postfix
password = ********
hosts    = localhost
dbname   = postfix
query    = SELECT description FROM domain WHERE domain='%s'

# vi mysql_virtual_mailbox_maps.cf
user     = postfix
password = ********
hosts    = localhost
dbname   = postfix
query    = SELECT concat(maildir,'Maildir/') FROM mailbox WHERE username='%s'
/var/lib/vpostmail/domain/$(domain)/$(local-part)/Maildir/としたいので、
concatを用いて「Maildir/」を追加する。
これにより、後に設定するdovecotの管理が簡単になる。

etc配下のconfigにはMySQL用パスワードが載ってるので読めないようにする。
オーナーをpostfixへ変更。
# cd ../; pwd
/var/lib/vpostmail
# chown -R postfix:postfix etc/
# ls -ld etc/
drwx------  2 postfix postfix 4096 May  7 20:35 etc/
設定内容確認
# /etc/init.d/postfix check
問題なければ反映
# /etc/init.d/postfix reload
Reloading postfix:                                         [  OK  ]
送信テスト
$ telnet localhost 25
helo localhost
mail from:foo@example.net
rcpt to:bar@example.com
data
Subject: test

test
test
.
quit
ログ確認
# tail -F /var/log/maillog
.....
エラーが出てなければOK


次回はPOP3サーバの設定



関連リンク




半袖 at 18:40|PermalinkComments(0)TrackBack(1)

RHEL4に[Postfix]+[Dovecot]+[PostfixAdmin]+[MySQL]環境構築(3/n) - PostfixAdminの設定

このエントリーをはてなブックマークに追加

管理ツールで管理負荷軽減


エンジニアであればコマンドラインからの作業で事足りる。
納品する場合など、相手がエンジニアとは限らない。
管理ツールを導入する事により、覚える事は最小限。

今回はメールアカウント管理ツールとしてPostfixAdminを使う。



環境概要

PostfixAdmindirectory/var/lib/postfixadmin/
URIhttp://postfixadmin.example.com/
Mailbox$(domain)/$(local-part)
MySQLdb_hostlocalhost
db_namepostfixadmin
db_userpostfix
db_pass********

ユーザー用Maildirディレクトリデザイン補足


今回、
『$(local-part)@$(domain)』のメールボックスを、
『$(domain)/$(local-part)』となるようにする。
これは単にvpopmailの構成が好きだったから。

PostfixAdminで設定する。
設定すべき変数が下記2つ。
$CONF['domain_path']'NO'(無し)
'YES'$(domain)/
$CONF['domain_in_mailbox']'YES'$(local-part)@$(domain)
'NO'$(local-part)

今回の設定。
$CONF['domain_path']'YES'
$CONF['domain_in_mailbox']'NO'



作業内容


# mkdir -p /var/lib/postfixadmin
# cd /var/lib/postfixadminostfixadmin; pwd
/var/lib/postfixadmin
# wget http://downloads.sourceforge.net/postfixadmin/postfixadmin_2.2.0.tar.gz?modtime=1209482958&big_mirror=0
# tar zxvf postfixadmin_2.2.0.tar.gz
# ln -s postfixadmin-2.2.0 htdocs
Apacheのconfig生成
# cd /etc/httpd/conf/vhosts-available/; pwd
/etc/httpd/conf/vhosts-available
# vi postfixadmin.example.com
.....(省略).....

# cd ../; pwd
/etc/httpd/conf
# ln -s `pwd`/vhosts-available/postfixadmin.example.com `pwd`/vhosts-enabled/
問題なければ反映(reload)
[root@www conf]# /usr/sbin/apachectl configtest
Syntax OK
[root@www conf]# /etc/init.d/httpd reload
Reloading httpd:                                           [  OK  ]
ここではsetup.phpへアクセス出きることのみを確認。
→ http://postfixadmin.example.com/setup.php
※まだ設定途中なのでエラーが多々出る。

DBアクセス用アカウント作成
$ mysql -uroot
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY '********';
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
PostfixAdminの設定
# pwd
/var/irokoi/postfixadmin/htdocs
# cp -pi config.inc.php config.inc.php.0
# vi config.inc.php
# diff config.inc.php.0 config.inc.php
31c31
< $CONF['configured'] = false;
---
> $CONF['configured'] = true;
51,53c51,53
< $CONF['database_host'] = 'localhost';
< $CONF['database_user'] = 'postfixadmin';
< $CONF['database_password'] = 'postfixadmin';
---
> $CONF['database_host'] = 'localhost';
> $CONF['database_user'] = 'postfix';
> $CONF['database_password'] = '********';
123c123
< $CONF['domain_path'] = 'NO';
---
> $CONF['domain_path'] = 'YES';
129c129
< $CONF['domain_in_mailbox'] = 'YES';
---
> $CONF['domain_in_mailbox'] = 'NO';
再び http://postfixadmin.example.com/setup.php を確認。
  • 各項目がOKとなる事を確認。
  • 管理アカウント作成を要請されるので、管理アカウントを作成する。
  • この時点でPostfixAdminがtableを生成してくれる
設定内容に問題がなければsetup.phpをリネームする。
※ここでsetup.phpが残っていると管理画面へアクセス出来ない。
# mv -i setup.php setup.php.deleted
管理画面へアクセス出切る事を確認する。
→ http://postfixadmin.example.com/

この時点でドメインとメールアカウントの管理を行えるようになる。
しかし、まだメール配送(Postfix)の設定がない。

続きは次回。



関連リンク




半袖 at 17:55|PermalinkComments(0)TrackBack(1)

RHEL4に[Postfix]+[Dovecot]+[PostfixAdmin]+[MySQL]環境構築(2/n) - Postfix入れ替え

このエントリーをはてなブックマークに追加

RHEL4のPostfixでは駄目


出鼻をくじかれる。
Postfixが対応するルックアップテーブル一覧を確認してみた。

$ /usr/sbin/postconf -m
btree
cidr
environ
hash
ldap
nis
pcre
proxy
regexp
static
unix
mysqlが無い!!



Postfixを作り直す


参考にしたページはPostfix + Courier-IMAP

$ pwd
/home/admin/work/rpms
$ mkdir -p {SOURCES,SPECS,BUILD,SRPMS,RPMS/i386}
$ echo "%_topdir $HOME/work/rpms" > ~/.rpmmacros
$ cat ~/.rpmmacros
%_topdir /home/admin/work/rpms
SRPMを取得する
$ cd SRPMS/; pwd
/home/admin/work/rpms/SRPMS
$ wget http://ftp.riken.jp/Linux/centos/5/os/SRPMS/postfix-2.3.3-2.src.rpm
$ rpm -ivh postfix-2.3.3-2.src.rpm
quota修正用パッチ
$ cd ../SOURCES/; pwd
/home/admin/work/rpms/SOURCES
$ wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
$ gunzip -d postfix-2.3.3-vda.patch.gz
$ cd ../SPECS/; pwd
/home/admin/work/rpms/SPECS
specファイル修正。
MySQLを使えるようにする。
$ cp -pi postfix.spec /tmp/
$ vi postfix.spec
$ diff /tmp/postfix.spec postfix.spec
2c2
< %define MYSQL 0
---
> %define MYSQL 1
82a83
< Patch10: postfix-2.3.3-vda.patch
136a138
> %patch10 -p1 -b .vda
$ rpmbuild -ba postfix.spec
標準パッケージと入れ替える
$ su
Password:
# apt-get remove postfix
# rpm -ivh ../RPMS/i386/postfix-2.3.3-2.i386.rpm
mysqlが入っている事を確認
$ /usr/sbin/postconf -m
btree
cidr
environ
hash
ldap
mysql
nis
pcre
proxy
regexp
static
unix
OK



関連ページ




半袖 at 16:00|PermalinkComments(0)TrackBack(0)

RHEL4に[Postfix]+[Dovecot]+[PostfixAdmin]+[MySQL]環境構築(1/n) - 序章

このエントリーをはてなブックマークに追加

話を聞いてみると、この構成が一番スマート


メールを環境を構築して欲しい。
そう頼まれた。
  • POPを使いたい
  • 複数ドメインを使いたい
  • アカウント管理をしたい

なるほど。

まだ構築した事がなかったけど、
一番スマートに思えた構成がこれ。

MTAPostfix+MySQL
POP3Dovecot+MySQL
管理ツールPostfixadmin+MySQL)

数エントリに分割して環境構築方法をまとめていく。



半袖 at 15:45|PermalinkComments(0)TrackBack(1)

2008年01月06日

Postfixで「envelope-from」と「envelope-to」を取得する

このエントリーをはてなブックマークに追加

envelope情報


友達に聞かれたので再度確認メモ
「MAIL FROM」「RCPT TO」を取得する方法ないの?

以前書いたメールの時間範囲指定配送を考察 Postfix編では情報不足。

envelope環境変数内容SMTP
envelope fromSENDER送信者メールアドレスMAIL FROM
envelope toRECIPIENT受信者メールアドレスRCPT TO

検証方法


下準備

$ cat ~/.forward
"| /usr/bin/env > /tmp/env.log.$$"
  • 環境変数を/tmp/env.log.$$へ出力
SMTP
$ telnet [maa ipaddr] 25
HELO smtp.example.com
MAIL FROM:<foo+envelope@example.com>
RCPT TO:<bar+envelope@example.com>
DATA
Subject: envelope
To: foo+heder@example.com
From: bar+header@exampel.com

envelope
/tmp/env.log.$$の内容のうち、
RECIPIENTとSENDERが、
envelope-to,envelope-fromと一致している事を確認した。



半袖 at 14:00|PermalinkComments(0)TrackBack(0)

2007年11月16日

Postfixでsmtpだけダウンさせる

このエントリーをはてなブックマークに追加

qmailの「qmail-smtpdだけダウン」
これをPostfixでやるにはどうしたらいいのか。

# vi /etc/postfix/master.cf
/etc/postfix/master.cfのsmtpをコメントアウト
# /etc/init.d/postfix check
# /etc/init.d/postfix reload

netstatで確認するなり、telnetで25番ポートへ接続してみると、
smtpだけダウンしている事を確認出来る。



半袖 at 15:10|PermalinkComments(0)TrackBack(0)

2007年08月13日

makeでサーバ管理効率を上げる Postfix編

このエントリーをはてなブックマークに追加

自分は良くmakeを使う(Makefileを書く)。


▼makeの良い所
対象となるファイルのタイムスタンプを比較し、比較対照よりも
新しくなっている場合、何かしらの処理を行ってくれる所。


この利点を上手く利用してやるとサーバ管理の効率を上げる要素となる。
例えばPostfixのconfig。

Postfixを使っている人は分かるだろうけど、main.cfやmaster.cf、
これ等Postfixのconfigはincludeディレクティブ未対応。
それゆえ、main.cfやmaster.cfを1ファイルに設定を集約してやる必要が出て来る。


効率よく管理する方法はいくつかある。
そのうちの1つが、複数ファイルを1ファイルとして結合する方法。

▼confを結合する時のイメージ
d47f193a.png


※画像クリックで拡大表示


▼/etc/postfix/main.cfを結合生成プロセス

・/etc/postfix/parts.d-common/main.cf 管理サーバ群共通設定
・/etc/postfix/parts.d-local/main.cf サーバ特有設定
  ↓
  ↓2つを結合する
  ↓
・/etc/postfix/master.cf


▼Makefile例
PARTS_COMMON=parts.d-common
PARTS_LOCAL=parts.d-local
MAIN_CFS=$(PARTS_COMMON)/main.cf $(PARTS_LOCAL)/main.cf

all: main.cf

main.cf: $(MAIN_CFS)
cat $(MAIN_CFS) > $@
echo $@ done.



▼実行結果
$ make
cat parts.d-common/main.cf parts.d-local/main.cf > main.cf
echo main.cf done.
main.cf done.


makeを実行する事により、main.cfが生成される。
parts.d-common/main.cfかparts.d-local/main.cfのタイムスタンプと比較し、
main.cfのタイムスタンプが *古い場合*、main.cfが再生成される。


結合用スクリプトを生成するよりも、makeを利用した方が良い事は多々ある。
シェルスクリプトを作っておいて良かったと思った事は…無いな。

makeはソースをコンパイルする為だけの物ではない。
サーバ管理にも使えるスグレモノ。
上手く使えば大分サーバ管理効率を上げる事が出来るはず。

広がるmakeの世界。



半袖 at 23:35|PermalinkComments(0)TrackBack(0)