半人前技術者の成長記

挫折と妄想を膨らませながら成長するだろう技術者の日記

Linux

SMTPサーバ(Postfix)の設定

投稿日:

仕事でも個人でも、SMTPサーバを利用する機会ができたので、
デフォルトのSendmailではなく、Postfixをインストールして
設定してみたいと思い、Postfixに挑戦。
基本的には、PostfixのSMTPサーバの設定を行った時のメモになる。

Postfixのインストール

# yum install postfix

Postfixの設定

Postfixの設定ファイルは、/etc/postfixディレクトリ以下にまとめられている。
このディレクトリにmain.cfというファイルを以下の通りに編集した。

# vi /etc/postfix/main.cf

[patch]
myhostname = ASPMX.L.GOOGLE.COM
mydomain = karakuridou.net
inet_interfaces = localhost
mynetworks = 127.0.0.1
relay_domains = $mydestination
mydestination = localhost
sender_canonical_maps = hash:/etc/postfix/canonical
header_checks = regexp:/etc/postfix/header_checks
[/patch]

myhostname
メールシステムのインターネットホスト名。
karakuridou.netはGoogle Appsを使っているのでGoogleを指定。

mydomain
メールシステムのインターネットドメイン名。
これは、メールを送信するドメイン名を指定。

inet_interfaces
メールを受け取るネットワークのインターフェースアドレス。
今回はメールの送信のみのため、localhostを指定

mynetworks
他のサーバからの中継範囲を指定する。
今回は、他のサーバは無いので127.0.0.1を指定

mydestination
メール配送 transport を使って配送されるドメインのリスト。
今回は、送信のみのため、localhostを指定。

relay_domains
メールをリレーしようとする配送先のドメイン。
$mydestinationで指定した設定と同じになる。

sender_canonical_maps
ヘッダ送信者アドレスに対する、オプションのアドレスマッピング検索テーブル。
Wordpressから送られたメールのReturn-Pathが apache@localhost.localdomain に
なっているのを修正するために利用。

header_checks
メールのヘッダー情報にあるローカルな情報を削除するために利用

Receivedヘッダーの削除

Receivedヘッダーには、SMTPサーバでどのMTAを使っているか、
などの情報が記載されてしまうため、削除しています。

# vi /etc/postfix/header_checks

[patch]
/^Received:/ IGNORE
[/patch]

Return-Pathのアドレス変更

今回は、apache@localhost.localdomainを
このドメインに存在するアドレスに書き換えました。

# vi /etc/postfix/canonical

[patch]
apache@localhost.localdomain ????@karakuridou.net
[/patch]

SPFの設定

今回は、ValuedomainとServerManVPSの組み合わせでSPFの設定を行いました。
初期の状態は、 Received-SPFは「neutral」でした。
これは、Return-Pathが「apache@localhost.localdomain」になっているためでした。
この問題は、Return-Pathのアドレスを変更することで解消しました。

Return-Pathを設定後の判定は、「softfail」になりました。
これは、メール送信したサーバのIPアドレスからkarakuridou.netがDNSで引くことができなかったためでした。
ですので、DNSの逆引き設定をしました。
幸い、ServerManVPSは9月度のアップデートで逆引きができるようになっていたので、
管理ツールから簡単に設定を行うことができました。

これで、再度メールを送信したところSPFの結果は「Pass」にすることに成功しました。

DNSサーバの逆引き設定は、レンタルサーバーなどのサービスで利用できない場合もありますが、
マルチドメインなどで運用している場合には自前でDNSサーバを立てる必要があります。
ちなみにServerManVPSで設定できる、逆引きレコードは1つです。

そのうち、DNSサーバにも挑戦してみよう。

参考

Postfix 基本設定
@itの記事
http://akira.matrix.jp/?p=84
http://www.crimson-snow.net/hmsvr/fedora/maild/postfix.html

pc

pc

-Linux
-, , , ,

執筆者:

関連記事

no image

コマンドラインからHipChatにメッセージを送信する

HipChatへコマンドラインからメッセージを投稿する方法になります。 メールでアラートを送信する方法が主に使われている方法ですが、最近のメールサーバは送信元のチェックが厳しくなったので送信したメール …

no image

負荷監視ツール Cactiインストール

サーバの負荷監視ツールのcacti(カクタイ)を導入した時の作業手順です。 まず、yumを使ってcactiをインストール。 # yum install cacti –enablerepo= …

no image

ランダム文字列をコマンドラインで生成

デフォルトだとCakePHPは、アラートを出すので、当たり前だけど。 CakePHPのSecurity.saltとchipseedを変更する際に便利なコマンド。 # 英数40桁 cat /dev/ur …

no image

Ubuntu10.04でのAutofsを使ったNFSのマウント

Ubuntu10.04でBUFFALO TeraStation(TS-HTGL/R5)のNFSを Autofsを使ってマウントした。 やり方は、Huuah.com(英語)に書かれていた方法を参考にしま …

no image

rsyslogでログをリモートサーバに送信

クラウドや仮想環境を使ってWebサーバの複数台構成が当たり前になっています。 複数台構成になると各サーバ毎に保存されているログをわざわざ各サーバにログインして確認するのは面倒です。 また、クラウドなど …

右上部広告