Ubuntu 20.04 LTS サーバ構築 – Postfixインストール
2022.05.01
この記事は最終更新日から1年以上が経過しています。
前回のUbuntu 20.04 LTS サーバ構築 – Let’s EncryptでSSL/TLS化の続きです。
今回は、Postfixをインストール、設定していきます。
メニュー
- Ubuntu 20.04 LTS サーバ構築 – 初期セットアップ
- Ubuntu 20.04 LTS サーバ構築 – Nginxインストール
- Ubuntu 20.04 LTS サーバ構築 – Let’s EncryptでSSL/TLS化
- Ubuntu 20.04 LTS サーバ構築 – Postfixインストール
- Ubuntu 20.04 LTS サーバ構築 – Dovecotインストール
- Ubuntu 20.04 LTS サーバ構築 – Postfix SASL認証
- Ubuntu 20.04 LTS サーバ構築 – Postfix Let’s EncryptでTLS化
- Ubuntu 20.04 LTS サーバ構築 – DKIM、DMARCを設定する
DNSレコードを追加
以下のDNSレコードを追加
タイプ | 名称 | TTL | 値 |
---|---|---|---|
A(通常) | 3600 | (VPSのIPアドレス) | |
MX | @ | 3600 | ポイント先 mail.(ドメイン) 優先度 10 |
TXT | @ | 3600 | v=spf1 ip4:(VPSのIPアドレス) ~all |
Postfixのインストール
ローカルのaptパッケージキャッシュを更新します。
$ sudo apt update
インストールプロセスの追加オプションを設定する為 環境変数 DEBIAN_PRIORITY=low をインストールコマンドに渡しインストール。
$ sudo DEBIAN_PRIORITY=low apt install postfix
対話型プロンプトが開きますので、プロンプトに応答していきます。
- メール設定の一般的なタイプ: Internet Site
- システムメール名: example.com (mail.example.comではない)
- rootおよびpostmasterメール受信者: プライマリLinuxアカウントユーザー名(例ではwebapp)
- メールを受信する他の宛先: $myhostname, example.com、localhost.example.com、localhost
- メールキューの同期更新を強制しますか?: No
- ローカルネットワーク: 127.0.0/8 [:ffff:127.0.0.0]/104 [:1]/128
- メールボックスのサイズ制限: 0
- ローカルアドレス拡張文字: +
- 使用するインターネットプロトコル: all
再設定を行いたい場合は、以下のコマンド。
$ sudo dpkg-reconfigure postfix
インストールプロセスが終了し、Postfix設定を更新する準備が整いました。
Postfix設定の変更
Postfixのpostconfコマンドを使用して`/etc/postfix/main.cf`ファイルを直接修正せず、クエリにて修正を行います。
myhostnameを変更します。
$ sudo postconf -e 'myhostname=mail.example.com'
home_mailbox変数を Maildir/ に設定します。
$ sudo postconf -e 'home_mailbox= Maildir/'
任意のメールアカウントをLinuxシステムアカウントにマッピングするため、virtual_alias_maps テーブルの場所を設定。
$ sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
ドメイン名(送信元サブドメインを削除するためのオプション設定 例:example.com)
$ sudo postconf -e 'masquerade_domains= example.com'
MTA情報の隠蔽
$ sudo postconf -e 'smtpd_banner = $myhostname ESMTP'
上記のコマンドより、/etc/postfix/main.cf ファイルは以下の様に修正、追加される。
myhostname = mail.example.com home_mailbox = Maildir/ virtual_alias_maps = hash:/etc/postfix/virtual masquerade_domains = example.com smtpd_banner = $myhostname ESMTP
設定内容確認
$ postconf -n
設定内容チェック
$ sudo postfix check
以下の様なエラーが出るが取り敢えず問題ない
postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out
Postfixプロセスを再起動ですべての変更を適用させる。
$ sudo systemctl restart postfix
ここまででPostfixによる送信用設定が完了します。
telnetで送信テスト
telnetをインストール
テストメールの送信telnetを利用します。
インストールされているかの確認コマンド
$ apt list --installed | grep telnet
インストールされていなければ、telnetをインストール
$ sudo apt install telnet
telnetでSMTP接続
telnetコマンドでSMTP接続を実行します。
$ telnet localhost 25
正常接続できればステータスコード220が返ってきます。
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.(ドメイン名) ESMTP Postfix (Ubuntu)
入力待機状態となるため下記のheloコマンドで応答します。
helo localhost
問題なければステータスコード 250が返ってきます。
250 mail.(ドメイン名)
mail fromコマンドで送信元のメールアドレスを指定します。
mail from:(Ubuntuにログインしているユーザ名)@(ドメイン名) 250 2.1.0 Ok
rcpt to: コマンドで実際に確認できる送信先を指定します。
rcpt to:hoge@test.com(送信先のメールアドレス) 250 2.1.5 Ok
メール本文を作成していくので、dataコマンドでメール本文を入力していきます。
data 354 End data with . Hello! sendmail test
本文入力後、`.` で入力でメール作成を終了します。
. 250 2.0.0 Ok: queued as 17867FC6EB
ステータスコード250が返って来て、キューに入った表示となれば送信完了となります。
quitコマンドでSMTP接続を切断できます。
quit 221 2.0.0 Bye Connection closed by foreign host.
送信先の受信ボックスを確認してメールが届いているか確認するのですが、大抵迷惑メールとして扱われていますので、迷惑メールボックスを確認。
現状のメールの認証はSPFのみPASSしている状況なので、追って設定していきます。
取り敢えず、送信確認は取れましたので、その他の設定としてメールアカウントマッピングを行っていきます。
メールアカウントマッピング
Linuxシステムのユーザーアカウントに、メールアカウントのマッピングします。
$ sudo vim /etc/postfix/virtual
info@example.comとcontact@example.comでメールを受信し、そのメールをLinuxユーザーのwebapp に配信したい場合は、以下の様に作成。
/etc/postfix/virtual
info@example.com webapp contact@example.com webapp
マッピングを適用します。
$ sudo postmap /etc/postfix/virtual
Postfixプロセスを再起動して、すべての変更が適用。
$ sudo systemctl restart postfix
UFWファイアウォール設定で、Postfixサービスへの接続を許可。
$ sudo ufw allow Postfix
Postfixは外部接続を受け入れるように設定されました。
続いて、SASL認証や受信も行えるように、Dovecotの設定を行っていきます。