戻る

Postfix + qpopper

[更新履歴]

05/06/04 … サイズ制限の設定/キュー操作コマンド
04/01/18 … qpopper を apop 限定に。
03/06/10 … リレーの設定を追記。

対象バージョン ... debian(woody) SMTP-AUTH / SMTP over SSL の設定はこっち。
Debian だとデフォルトで exim がインストールされるが、Postfix の方が Web で情報が集めやすかったのと、見た感じ設定が簡単そうだったので。。。

とりあえず、DDNS サービス上で MX レコードを設定できるのが条件、なのかな?自前でDNSサーバ動かすなら話は別なのだろか。。。?BINDはよくわからん

POP するなら、POPサーバが必要。mailコマンド使うならいらないみたいだけど、そんなワケにも。。。w

インストール

お約束の apt-get
# apt-get install postfix

General type of configuration?           Internet Site
Mail name?                               DDNSのドメイン
Append .domain to simple address         No
Other destinations to accept mail for?   (default)
Where should mail for root go            (常用アカウント?)

設定

とりあえず、いろいろ変更するまえにお約束のバックアップ。イジるのは main.cf だけなので、これだけでいい。
# cd /etc/postfix
# cp main.cf main.cf.default
修正が終わったときは、(動作確認した上で)その時の日付か何かで修正後の設定ファイルもお約束のバックアップ。
# cp main.cf main.cf.`date +%Y%m%d`

基本的にデフォルトでも不正中継しないようになっている(ハズ)けど、複数のDDNSを利用して、MXレコードが複数ある場合は、その辺も書いておく。こんな感じ。基本的にイジってない。
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
setgid_group = postdrop
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
myhostname = ddns.example.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydomain = $myhostname
myorigin = $myhostname
mydestination = $myhostname, anotherddns.example.com, localhost.$myhostname, localhost
allow_mail_to_commands = alias, forward, include --> 下記参照
mynetworks = 192.168.0.0/24, 127.0.0.1/8
relayhost =
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +

fml などの外部スクリプトを使った(よくわからん)メーリングリストなどを使う場合は、スクリプトへ forward できるように、以下の設定を追加。
allow_mail_to_commands = alias, forward, include
fmlについてはこっち

修正が済んだら、Postfixのリブート。
# cd /etc/init.d
# ./postfix restart
mailコマンドを使って、ローカル・外部へメールを送って送受信ともに確認する。

06/10 追記
○ 特定ドメイン宛のメールを、別の(上位プロバイダとか)MTA へリレーさせて送信

1. リレーしたいドメインと、そのリレー先を記述するファイルを用意。以下のコマンドを実行
# vi /etc/postfix/transport
以下、記述例。
docomo.ne.jp と ezweb.ne.jp というドメイン宛のメールは全て、mail.server.ne.jp というメールサーバへリレーさせる場合。
docomo.ne.jp   :[mail.server.ne.jp]
ezweb.ne.jp    :[mail.server.ne.jp]
2. んで、以下のコマンドを実行
# postmap /etc/postfix/transport
同じディレクトリに、transport.db というファイルができたのを確認する。

3. 次に、main.cf ファイルに、以下の内容を追加。(ファイル末尾でオッケ)
transport_maps = hash:/etc/postfix/transport
4. 最後に、Postfix のリロード(または再起動)

qpopper インストール・設定

#  apt-get install qpopper
こんだけ(笑)

あとは、APOP を使うために、以下のコマンドで APOP 用のパスワードを設定する。
# popauth -init

user$ popauth
New password: --> APOP用のパスワード入力
Retype new password:
できたら、APOP 対応の MUA 使ってアクセスすればおっけぃ。

[01/18 追記]

ちなみに qpopper の初期状態では、 とゆー、クリアなパスワードが垂れ流しになる微妙な状態にあるので、/etc/qpopper.conf の以下の箇所(78行目付近)を修正。
# Sets clear text handling options.  Values are:
#    o 'default'  Clear text passwords are permitted for all users,
#                 except those in the APOP database
#    o 'never'    Clear text passwords are never permitted
#    o 'always'   Clear text passwords are always permitted
#    o 'local'    Clear text passwords are permitted on the local
#                 (127.*.*.*) loop back interface only
#    o 'tls'      Clear text passwords are permitted when TLS/SSL
#                 has been negotiated for the session
#    o 'ssl'      Same as tls
#
# The 'tls' and 'ssl' values are only valid if '--with-openssl' or
# '--with-sslplus' was used with ./configure.
#
# Default: default
#
set clear-text-password      = never
修正が済んだら、inetd のりスタート
# /etc/init.d/inetd restart
これで、pass コマンドが使えなくなったのを確認(赤字が入力部分/レスポンスに"pass user"がないのを確認する)
$ telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Qpopper (version 4.0.4) at cheddar starting.  <14026.1074217416@cheddar>
capa
+OK Capability list follows
TOP
LOGIN-DELAY 0
EXPIRE 0
UIDL
RESP-CODES
AUTH-RESP-CODE
X-MANGLE
X-MACRO
X-LOCALTIME Fri, 16 Jan 2004 10:43:39 +0900
IMPLEMENTATION Qpopper-version-4.0.4
.
quit
+OK Pop server at cheddar signing off.
要は、popauth を実行すると、そのユーザのデータが /etc/pop.auth に格納されるので、それをチェックする。(標準設定の場合)このファイルにデータがあるユーザは、apop のみってコト。
# strings /etc/pop.auth
ちなみに、always だと、pop.auth があろうがなかろうが、apop も pass も許可される。(まぁ、ない場合は apop できませんが…)

[05/06/04 追記]

Postfix サイズ関連の設定

(今更書きたさなくても…)

1通のメールに対する制限 メールボックスに対する制限

管理用コマンド

キュー関連