メールサーバを作ります-3

2の続きです。

・postfixの設定

postfixの設定をします。
実際にはかなり試行錯誤したのですが、かなり間抜けなミスで何時間もハマったりとお恥ずかしい次第なので結論のみを書いていきます。
実際に作業した頃から時間もたっているので、エラーログとか細かく覚えてor保存してないってのもあります。

postfixは/etc/postfix/main.confと/etc/postfix/master.confで設定を行います。
作業前には必ずバックアップを取りましょう。

postfixに限らずですが、confファイルはデフォルトでいろいろ説明書きがあることが多いです。
たいていの人がそうだと思いますが、おいちゃんもGoogle先生のご託宣に従って色んなサイトの情報をつぎはぎしてconfファイルの編集をしています。
この時、confファイルの説明書きをざっくりでいいから読んでおきましょう。どのくらいざっくりかというと英検4級の斜め読みくらいのざっくり加減です。
そんなん意味あるのかよ、と思われるかもしれませんが、動詞と名詞くらいはなんとか読めるので何をどうする設定なのか、くらいは理解が可能です。
おいちゃんみたいなド素人だと「とりあえずこのサイトにここにこう書けばいいって書いてあった」という理解だけで進めがちです。
これだとエラーに遭遇した時に何が悪かったのかの判断が遠ざかることになります。当然エラーの解消までの道のりも遠ざかります。
最低でも「今弄ったのはSSLに関係するところ」「今弄ったのは認証に関係するところ」と何を弄って吐いたエラーなのかは理解しておくと、解消方法も「エラー 起動しない」だけでなく、「SSL エラー 起動しない」などキーワードを絞り込んで探せるので少しでも解消までの道が近くなります。

/etc/postfix/main.confの内容です。

# INTERNET HOST AND DOMAIN NAMES
#
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = centos7.oichan.com

68行目くらい。
サーバに割り当てたホスト名を追記します。コメントアウト外してホスト名部分を書き直してもいいです。

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
mydomain = oichan.com

78行目くらい。
メールドメインになるドメイン名を追記します。

# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites.  If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
・
・
・
#myorigin = $myhostname
#myorigin = $mydomain
myorigin = $mydomain

78行目くらい。
配信元になるOriginを書け、とのことのようです。
おいちゃんはこのサーバ、このドメインでメールを送信するわけなので、前述のmydomainを指定します。
多分たくさんMTAを作っていろいろ用途別にこの送信はこう、この送信はこう、と分けて設定するとか以外ならmydomainを書けば問題ないと思います。

# RECEIVING MAIL

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
・
・
・
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = all

101行目くらい。
メール受信できるネットワークを書くらしいです。
普通に外部ともメールのやり取りをしたいのでallとします。

# The mydestination parameter specifies the list of domains that this
# machine considers itself the final destination for.
・
・
・
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

136行目くらい。
とりあえず「ドメインのリスト」を書くところのようです。
多分、たくさんドメインを取り扱う場合にはここでいろいろ設定するんでしょうね。
今回は1個のドメインだけなのでデフォルトの記載の後ろに$mydomainを追加します。(デフォルトだと「localhost」までになっています。)

# Alternatively, you can specify the mynetworks list by hand, in
# which case Postfix ignores the mynetworks_style setting.
・
・
・
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
mynetworks = 192.168.0.0/24, 127.0.0.0/8

253行目くらい。
ネットワークの設定です。
たぶん、自環境内で接続を許可したかったり許可したくなかったりなんてときに使うんではないかな、と。
今回は特にないのでローカルのアドレスを書いておきます。

# The relay_domains parameter restricts what destinations this system will
# relay mail to.  See the smtpd_recipient_restrictions description in
# postconf(5) for detailed information.
#
・
・
・
relay_domains = $mydestination

272行目くらい。
メール中継をするドメイン(中継したいメールが飛んでくる元のSMTPサーバのドメイン)を書くようです。
ここは普通にメールを送信するだけならひょっとしていらなかったのかも。
とりあえずmydestinationとして自ドメインを指定しておきました。

# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
home_mailbox = Maildir/

411行目くらい。
メールボックスの位置をしていするところのようです。
Maildir/としました。
あとでメールユーザ作るときに必要なので覚えておきます。

# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP unknown

564行目くらい。
メール送信サーバアプリケーションのバージョンを聞かれたときにこたえる内容です。
当然ですが、な・い・しょ♡なのでunknownとします。

デフォルトから変更する内容は以上です。
あとは自分が作りたいメールサーバの設定、認証をどうするだとかユーザをどうしたいだとかをファイルの末尾に追加していきます。

・disable_vrfy_command = yes
ユーザの存在を問い合わせるコマンドVRFYを拒否します。

・smtpd_sasl_auth_enable = yes
SASL認証を有効にします。

・broken_sasl_auth_clients = no
SASL認証に失敗したクライアントは拒否します。

・smtpd_sasl_security_options = noanonymous
匿名認証を拒否します。

・smtpd_sasl_local_domain = $mydomain
SASL認証をするドメインを指定します。

・smtpd_sender_restrictions = reject_unknown_sender_domain
送信者のアドレスのドメインがDNSでAレコードかMXレコードでちゃんと引けないものは拒否します。

・smtpd_client_restrictions =
permit_mynetworks,
reject_unknown_client,
permit
送信者の制限を指定します。
上記の場合、自分のドメインは許可、知らないクライアントは拒否としています。
ブラックリストのドメインをここで登録することで変な人に使われないようにすることもできます。

・smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
受信者の制限を指定します。
自ドメイン、SASL認証をした人は許可。認証がない人は拒否します。

・message_size_limit = 10485760
メールサイズの制限をします。

・smtpd_tls_cert_file = /etc/pki/tls/certs/mailserver.crt
・smtpd_tls_key_file = /etc/pki/tls/certs/mailserver_noenc.key
・smtpd_use_tls = yes

SSL/TLSの設定をします。
crtファイルを指定、keyファイルを指定、tlsの利用を有効にします。

4へ続きます。

広告
カテゴリー: お仕事 タグ: パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中