Postfixには様々なパラメータが存在しますが、その一番の特徴は
何も設定を施さなくても最低限のセキュリティはなされているということです。
ただし、運用する際にはいろいろな条件が必要になる場合があるので、
ケースバイケースで設定をする必要があります。
Postfixには、受信したメールを格納する方式として、下記の2つを指定することが出来ます。
MaiBox形式
Maildir形式
MailBox形式とは、従来のsendmailなどで採用されていた、1つの受信メールファイル(MailBox)に、
すべての受信ファイルを格納して保存するというものです。
※メールクライアントソフトだと、OutlookExpressや、ThunderBirdが同様のメール格納方式を採用しています。
MailBox形式の利点は、全てのメールが1つのファイルに集約して格納されているため、バックアップを取るときに便利です。
また、サーバの移行時に比較的簡単に移行をすることが出来ます。
しかし、1つのファイルにすべてのメールデータが格納されているため、保存ファイルが破損した場合、全てのメールデータが
読めなくなるという欠点があります。
また、大量のメールを保存するようになると、読み込みに時間がかかるという問題もあります。
Maildir形式の利点は、上記のMailBoxの欠点を解消するために考案されたもので、大量のメールデータが格納されていたとしても
極端なアクセス速度の低下を起こさないようになっています。
また、1つのメールに対して1つのファイルで保存しているため、万が一1つのファイルが破損したとしてもすべてのメールに影響を
及ぼさないようになります。
ただし、Maildir形式にも唯一欠点というか、問題点があります。
ディスクの使用効率という点では、MailBox形式よりも悪くなるため、大量のメールを保存するようになると消費するディスクの容量が
若干大きくなってくるようになります。
※Linuxでは有名なメールクライアントソフトである、Sylpheed がMailDir形式と同様の、1メール1ファイル形式で保存しています。
もちろん、Windows, MAC OSなどマルチプラットフォームなメールクライアントソフトです。
Maildir形式に移行するための手順
/etc/postfix/main.cf の編集
home_mailbox = Maildir/
Dovecotの修正
詳しくは、Dovecotの項目を参照してください
Maildirの準備
mkdir /etc/skel/Maildir/{new,cur,tmp}
chmod 700 -R /etc/skel/Maildir
mkdir /root/Maildir/{new,cur,tmp}
chmod 700 -R /root/Maildir
何らかの問題で(間違ったユーザ名宛のメールやその他もろもろの問題で)ユーザ宛のメールボックスに配送されずに、
メールキューに溜まっているキューの確認方法や強制配送方法、削除方法を記載します。
キューの確認方法
mailq
このコマンドによりキューIDという、メールサーバ内で処理するIDを確認することができます。
このIDを用いて、内容の確認や、削除を行うことができます。
キューの内容を確認する方法
postcat -q キューID
キューを削除する方法
posusuper -d キューID
キューをすべて削除する方法
postsuper -d ALL
たまったメールキューを今すぐ再送する方法
sendmail -q
複数のアカウント名を、1つのアカウントで受信することが出来るようになります。
また、1つのアカウントに対して、複数のアドレスを定義することが可能です。
この機能を使って、後述するメーリングリストを実現する事が可能です。
# vi /etc/postfix/aliases
user1: spuser
user2: spuser
user3: spuser, spuser2
編集後、
# postalias /etc/postfix/aliases
postfixの再起動を行う必要はありません。
外部用転送メールサーバと、内部用メールサーバを分けていたり、複数のメールサーバを運用していて
宛先ドメインごとに転送するサーバのアドレスを変更する場合に利用します。
特定のドメイン宛のメールを転送する場合
複数のドメインを運用していて、それぞれ別のサーバに転送させたい場合
# vi /etc/postfix/transport
example.com smtp:[192.168.1.10]
.example.com smtp:[192.168.1.10]
hogehoge.org smtp:[192.168.1.11]
.hogehoge.org smtp:[192.168.1.11]
編集後、
# postmap /etc/postfix/transport
postfixの再起動を行う必要はありません
なお、ドメイン名の前に『.』(ドット)をつけているのは、サブドメインも対象とするためです。
必要ない場合には記載しなくても構いません。
特定のアカウント宛のメールを、指定したサーバへ転送する場合
# vi /etc/postfix/transport
spuser@example.com smtp:[192.168.1.20]
編集後、
# postmap /etc/postfix/transport
postfixの再起動を行う必要はありません
Postfixが送信する際に様々なヘッダ情報を付加しますが、その情報を制御するための項目です。
内部のIPアドレス情報を外部に漏らしたくない場合
通常Postfixは、メールを送信する際に、ヘッダ情報として下記のような情報を付加します。
Received: from [192.168.2.10] (unknown [192.168.2.10]) by mailsv.hogehoge.co.jp (Postfix) with ESMTP id 68174C419
この情報はこの情報で、重要な意味を持つのですが、良からぬ輩に対して、
内部のIP情報を与えることとなります。
こういった情報を外部に漏らさないようにするためには、下記の情報を追加します。
# vi /etc/postfix/header_cheks
/^Received:\sfrom .*\[127\.0\.0\.1\]|^Received:\sfrom .*\[192\.168.*\]/ IGNORE
※もし、使用するネットワークアドレスが172.16等の場合には、設定部後半のIPアドレスの部分を編集してください。
編集後、
# postaliase /etc/postfix/header_checks
なお、main.cfの下記の部分のコメントを外して下さい。
# vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
※必ず、Postfixを再起動してください
# /etc/rc.d/init.d/postfix restart
または、
# service postfix restart
パラメータの詳細説明
送信ファイルサイズを大きくする
例)100Mbyteに制限する場合
# vi /etc/postfix/main.cf
message_size_limit = 104857600
例)無制限する場合
# vi /etc/postfix/main.cf
message_size_limit = 0
受信ファイルサイズを大きくする
※この設定パラメータは、受信したメールの格納方式によって、考え方が違ってきます。
「/etc/postfix/main.cf」内の以下の設定
home_mailboxの設定値(以下参照)
・Mailbox
受信メール総容量になります。
例えば、100MByteに制限した場合、1メールが1MByteとすると100通まで受信できる
・Maildir
1メールの容量になります。
例えば、100MByteに制限した場合、1メールが100MByteまでであれば、何通でも受信できる
もちろん、ディスクに空きがあればの話ですが…
※送信するファイルサイズよりも、受信ファイルサイズを小さくするとエラーになるので、注意してください。
例)100Mbyteに制限する場合
# vi /etc/postfix/main.cf
mailbox_size_limit = 102400000
例)無制限する場合
# vi /etc/postfix/main.cf
mailbox_size_limit = 0
デフォルトは、/etc/aliasesに対して、
メンバーが、taro, jiro, saburo で、ML名が[daigo]の場合
一番最後の行に、
daigo: taro, jiro, saburo
その後、newaliases を実行すれば、/etc/aliases.dbが作成されます。
なお、/etc/以外にaliasesファイルを作成している場合には、
postaliases /etc/postfix/aliases
ただし、この方法だと、ユーザが増減するたびに、newaliasesコマンドを実行しなければならず
非常に効率が悪いです。
Postfixには、aliasesファイルの中に、別ファイルのユーザ情報を読みこませるという設定を記述することが可能です。
/etc/aliases
daigo: :include:/var/spool/ml/ml-daigo
その後、一度だけnewaliasesコマンドを実行させ、以後は、下記のファイルを編集するだけで
簡単なメーリングリストが完成です。
/var/spool/ml/ml-daigo
taro
jiro
saburo
siro
最近のプロバイダは、ポート番号25でメールの送信を禁止していることが多くなってきています。
そんな時に下記の設定を行います。
# vi /etc/postfix/master.cf
#submission inet n - n - - smtpd
↓
submission inet n - n - - smtpd
Postfix を再起動します。
# /etc/rc.d/init.d/postfix restart
これで、大丈夫! なはずです。。。
IP1の契約をして、ウェブサーバやメールサーバを構築することは多いと思います。
しかし、IP1の契約だと、IPアドレスの逆引きを行うことが出来ず、近年は大半のサーバ(Googleもそう)で
接続拒否させされます。
そんな時には、OCNの契約時に割り当てられる、メールアカウントを経由して転送を行うことが出来ます。
/etc/postfix/main.cf の、320 行目くらいに下記の行を追加します。
relayhost = [180.37.199.151]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = LOGIN,PLAIN,CRAM-MD5
vi /etc/postfix/sasl_passwd
[SMTPサーバのアドレス] メールアカウント:メールパスワード
編集後、下記のコマンドを実行します
postmap /etc/postfix/sasl_passwd
設定後、Postfixの設定を再読み込みすると、指定したメールアカウント経由でメールを送れるようになります。
/etc/rc.d/init.d/postfix reload
エラーメール
SMTP応答コード一覧