半人前技術者の成長記

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

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

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

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

no image

mackerel(マカレル)のプラグイン追加

Saas型のサーバの負荷、死活監視サービスのmackerel(以下、マカレル)の公式プラグインをインストール手順です。 追加したプラグインは、以下の点になります。 1.Apache 2.MySQL プ …

no image

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

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

no image

直下で使われているディスク容量を出す方法

duは、ディレクトリ内のファイル容量を表示するLinuxコマンドです。 -kオプションを使うと指定ディレクトリ以降のディレクトリの容量を出力されるが、大量のファイルやディレクトリがある場合に行数が多く …

no image

ssh 公開鍵認証の設定

接続先のサーバーにローカルで作成した公開鍵を設置する方法が一般的な方法ですが、毎回鍵を作り直す手間があります。 そこで、今回はサーバー上の秘密鍵をローカルに転送し、利用することにしました。 鍵の作成 …

右上部広告