各種設定
DDNS環境下でMTA (Message Transfer Agent つまり SMTP サーバのこと)を
導入する手順についてまとめた。POP3設定も同時に行う。
DDNS環境下で、内部と外部のネームサーバーなどの意識はしなくても良い。
DDNSサービスでのドメイン名のみで問題なく稼動できる。
導入条件・環境など
- MTAとして、Postfix を導入
- POP3として、Qpopperを導入(APOPで暗号化)
- DDNS環境で動く設定ができること
Postfixの導入手順を次に示す。
Step_01 Postfixのインストール ( /stand/sysinstall でバイナリを利用 )
Step_02 Sendmailの停止
Step_03 Postfixの設定
Step_04 Postfixの起動
Step_05 Postfixの自動起動
Step_06 qpopperのインストール ( /stand/sysinstall でバイナリを利用 )
Step_07 qpopperの自動起動設定
Step_08 ユーザー登録
Step_09 qpopperのテスト
SMTP導入の初心者にはPortsバイナリからの導入を薦める。Portsからのインストール
では、意味不明(初心者にとって???)の設定の問い合わせが続くため不安になる。
これらを避けるためや、コンパイルエラーがでない安心インストールのためにPortsバイナリ
の導入を薦める。
# /stand/sysinstall
Configure ---> Packges ---> mail --->postfix
インストール完了
# rehash
sendmailでSMTPを動かしてない場合、このStepは不要。動いていなくても
動いているかどうかが不安な場合には、この処理を行うことを薦める。
メールキューを空にする
# sendmail -q
sendmailを停止
# killall sendmail
sendmail関係が動いていないいることを確認
# ps xa | grep sendmail
Postfixの設定は、2つの設定に分類される。
・Postfixの機能設定、動作設定
・Postfixを動かすための環境設定
設定対象ファイルを示す。
/usr/local/etc/postfix/main.cf
通常のメールサーバとして運用するための設定をする
/etc/mail/mailer.conf
SMTPの環境設定を行う
/etc/rc.conf
sendmail から postfix の sedmail に合わせた変更を加える
/etc/periodic.conf
cronでエラーが発生しないようにcron の一部の機能を制限する
/etc/newsyslog.conf
sendmail のログローテーションを止めるため /etc/newsyslog.conf を変更する
/etc/aliases
エラーメールの受信者を決めるため /etc/aliases を編集する
▼通常のメールサーバとして運用するための機能を設定する
設定条件を次に記す。
変数名 | 変数ID | 値 |
ドメイン名 | mydomain | sample.ddns.jp |
メールサーバー名 | myhostname | M-Server.sample.ddns.jp |
このサーバーが受け取るアドレス | mydestination | @sample.ddns.jp |
メールゲートウェイ | relayhost | なし |
/usr/local/etc/postfix/main.cf
を修正する。修正ポイントを示す。それ以外は修正しなくも良い。
myhostname = M-Server.sample.ddns.jp
mydomain = sample.ddns.jp
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain $mydomain
mynetworks_style = class
mail_spool_directory = /var/mail
詳細はマニュアルを参照すること。
記述に間違いがないかをチェックする。
# rehash
# postfix check
エラーが出なければ、問題なし。
▼SMTPの環境設定を行う
SMTPの環境設定を行う。
ディフォルトではSMTPとしてsendmailが設定されているため、これをpostfixに変更する。
Postfix は sendmail を交換する形で導入する形を取っているためにこのような形式となる。
/etc/mail/mailer.conf
を修正する。
# $FreeBSD: src/etc/mail/mailer.conf,v 1.3 2002/04/05 04:25:12 gshapiro Exp $
#
# Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail
#
#sendmail /usr/libexec/sendmail/sendmail
#send-mail /usr/libexec/sendmail/sendmail
#mailq /usr/libexec/sendmail/sendmail
#newaliases /usr/libexec/sendmail/sendmail
#hoststat /usr/libexec/sendmail/sendmail
#purgestat /usr/libexec/sendmail/sendmail
# for Postfix by Mickey 2004/06/01
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
hoststat /usr/local/sbin/sendmail
purgestat /usr/local/sbin/sendmail
奇妙に思えるが、FreeBSD では /usr/sbin/sendmail は次のような動きをしている。
/usr/sbin/sendmail を呼び出すと、実際には mailwrapper プログラムが動き、mailwrapper プログラムは
/etc/mail/mailer.conf を見て、実際に呼び出すプログラムを決定している。
▼sendmail から "postfixのsedmail" に合わせた変更を加える
sendmail から "postfixのsedmail" に合わせた変更を加える。
環境によっては、全て追記となる場合がある。
/etc/rc.conf
を修正する。
# 2004/05/31 Appendding by Mickey
sendmail_enable="YES"
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"
▼cronでエラーが発生しないようにcron の一部の機能を制限する
cron でエラーが発生しないように /etc/periodic.conf を新規に作成し、
cron の一部の機能を制限する。
/etc/periodic.conf
を新しく作成する。
daily_clean_hoststat_enable="NO"
daily_status_mail_reject_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
▼sendmail のログローテーションを止めるため /etc/newsyslog.conf を変更する
/etc/newsyslog.conf
を修正する。
次のようにコメントアウトする。
#/var/log/sendmail.st 640 10 * 168 B
▼エラーメールの受信者を決めるため /etc/aliases を編集する
Postfixで利用するaliasesの編集をする前に、Postfixで利用するaliasesの設定が必要。
Postfixで利用する標準aliasesファイルは、/etc/aliasesとなっている。
そのため、標準のmail-aliasesは、 /etc/mail/aliases となっているため
シンボリックリンクを張り、解決させる。
その後、エラーメールの受信者を決めるため /etc/aliases を編集する。
シンボリックリンクを作成する。
# ln -s /etc/mail/aliases /etc/aliases
/etc/aliases
を修正する。
postfix のエラーメールの受信者を決めるため /etc/aliases を編集する。
MAILER-DAEMON: postmaster
postmaster: root
postfix: root
起動する前に、mail関連の設定が正しいかをチェックする。
# /usr/local/sbin/postconf | more
デフォルトも含めて全て出力されるので、ファイルにリダイレクトしても良い。
起動する。
# postfix start
オプションを指定せずに起動すると、現在利用可能なオプションを示してくれる。
start 起動
stop 停止
reload 定義ファイルの再読み込み
abort 強制終了
flush 再送待ちメイルの強制的再処理
check Postfixシステムの検証
その後は実際にメールを送って動作を確認する。
▼この時点ではPOP3は設定されておらず、clientでメールを取り出すことができない。
postfixは起動したが、設定したサーバーからメールを取り出すことができない。
このためPOP3サーバーの導入が必須となる。
OS のブート時に自動起動するように起動スクリプトを作成する。
/etc/rc.conf
で次のように設定した。
# 2004/05/31 Appendding by Mickey
sendmail_enable="YES"
このため、自動起動の設定は不要
詳細は、前述した ▼SMTPの環境設定を行う を参照
portsバイナリでインストールする。
バイナリが無い場合はportsから
make install でインストール。
# /stand/sysinstall
Configure ---> Packges ---> mail --->qpopper
インストール完了
# rehash
/etc/inetd.confを修正する。
次のような手順で修正する。(初心者向け)
# /stand/sysinstall
Configure ---> networking ---> inetd --->チェック・オン
中身の修正をしますかと聞かれるので、Yesと答え、次のようにpop3を
書き換える。
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -t /var/log/qpopper.log
設定完了
# rehash
有効にするには、
# kill -HUP `cat /var/run/inetd.pid`
と打ってinetdを再起動させるかシステムリブートする。
qpopperにユーザー登録をする
最初にPOP3ユーザーすべてのログインパスワードを初期化する。
最初1回やれば、今後二度とする必要はない。root権限のみ可能
# qpopauth -init
APOPを使うユーザー(たとえばjhon)がいれば、
# qpopauth -user jhon
Changing only APOP password for jhon
New password:
Retype new password:
とパスワードを入力し終了
これ以降、APOP以外のプロトコルではアクセス出来なくなる。解消した場合
# qpopauth -delete jhon
メールの送受信で動作チェックする。
メールクライアントソフトは、APOP対応のものが必要となる。
APOPの設定をしていなければ、IDはユーザー名、パスワードはFreeBSDのログインパスワードとなる。