MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. 仮想化
  4. Docker
  5. 【Docker】SMTPサーバ(Postfix)構築と動作確認成功まで(Relay access denied)対応も

【Docker】SMTPサーバ(Postfix)構築と動作確認成功まで(Relay access denied)対応も

2021 3/03
Docker
2021年3月1日2021年3月3日

検証やローカル環境で送信メールサーバーを構築するのは結構めんどくさい作業となります。
DockerではPostfixのコンテナを簡単に実施することができ、動かすことができるので手順をメモしておきます。

事前にDockerのインストールは必要となるので以下のページを参照してください。

あわせて読みたい
【CentOS8】Dockerインストールと起動・SSHアクセスまで(無償版CE) CentOS8でDockerインストールを実施し、CentOS8のコンテナを構築・sshアクセスまでを構築したので手順を公開します。 CentOSのバージョンは以下となります。 2020年11月...

今回の環境は以下となります。

[root@mail ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

「Docker」Postfix(catatnight/postfix)コンテナ起動~動作確認まで

今回構築するPostfixのコンテナは、Docker公式ページの「catatnight/postfix」を利用します。

参照先URL:
「docker hub」catatnight/postfix

手順は簡単で、イメージをダウンロードして、コンテナを起動するだけでPostfixが動作します。
私は構築までに1分もかからなかったです。

「catatnight/postfix」イメージをダウンロード

「docker pull」コマンドで「catatnight/postfix」をダウンロードします。

[root@mail ~]# docker pull catatnight/postfix

以下コマンドで「catatnight/postfix」がダウンロードされていることが確認できます。

[root@mail ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
catatnight/postfix   latest    d7c7642e8ae7   6 years ago   257MB

「catatnight/postfix」コンテナ起動

コンテナ起動は公式ページの記述そのままで実行してみます。

[root@mail ~]# sudo docker run -p 25:25 -e maildomain=mail.example.com -e smtp_user=user:pwd --name postfix -d catatnight/postfix

ローカル、検証環境に合わせて以下を変更してください。
以下は例として、公式の設定そのままで記述しています。

  • ドメイン名:mail.example.com
  • ユーザー名:user
  • パスワード:pwd

正常にコンテナが起動すると以下のコマンドで確認ができます。
「STATUS」がUPになっていることが確認できます。

[root@mail ~]# docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED        STATUS        PORTS                NAMES
6b998d88b8c2   catatnight/postfix   "/bin/sh -c '/opt/in…"   24 hours ago   Up 20 hours   0.0.0.0:25->25/tcp   postfix

「Postfix」SMTPの動作確認で「Relay access denied」のエラーが発生する

正常に起動したらtelnetコマンドを用いて動作確認を実施します。

以下ではコンテナを立ち上げたばかりの状態で「SMTP」のテストを行ったときのログですが、宛先メールアドレスを指名した際に「Relay access denied」のエラーが発生し、正常に動作しません。

[root@mail ~]# telnet localhost smtp
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix (Ubuntu)
mail from:test@gmail.com
250 2.1.0 Ok
rcpt to:test1@test.co.jp
454 4.7.1 <test1@test.co.jp>: Relay access denied
quit
221 2.0.0 Bye
Connection closed

「Relay access denied」のエラー解消方法:原因はコンテナ内の通信でIPアドレスを許可してないため

「Relay access denied」のエラーが発生する原因は、Postfixに問合せするIPアドレスが許可されていないからです。

エラー確認のため、コンテナへアクセスします。

[root@mail ~]# docker exec -it postfix /bin/bash
root@6b998d88b8c2:/#

メールログを確認し、エラーの内容を確認します。
172.17.0.1のアドレスから問い合わせが来ているようですが、Postfixでは知らないIPアドレスから来ているので拒否しているようです。

root@6b998d88b8c2:/# tail -100 /var/log/mail.log


Mar  1 08:34:54 6b998d88b8c2 postfix/smtpd[87]: connect from unknown[172.17.0.1]
Mar  1 08:35:13 6b998d88b8c2 postfix/smtpd[87]: NOQUEUE: reject: RCPT from unknown[172.17.0.1]: 454 4.7.1 <test1@test.co.jp>: Relay access denied; from=<test@gmail.com> to=<test1@test.co.jp> proto=SMTP
Mar  1 08:35:23 6b998d88b8c2 postfix/smtpd[87]: disconnect from unknown[172.17.0.1]
Mar  1 08:37:41 6b998d88b8c2 postfix/master[72]: reload -- version 2.11.0, configuration /etc/postfix
Mar  1 08:37:41 6b998d88b8c2 postfix/anvil[89]: statistics: max connection rate 1/60s for (smtp:172.17.0.1) at Mar  1 08:31:29
Mar  1 08:37:41 6b998d88b8c2 postfix/anvil[89]: statistics: max connection count 1 for (smtp:172.17.0.1) at Mar  1 08:31:29
Mar  1 08:37:41 6b998d88b8c2 postfix/anvil[89]: statistics: max cache size 1 at Mar  1 08:31:29
Mar  1 08:37:47 6b998d88b8c2 postfix/smtpd[146]: connect from unknown[172.17.0.1]

コンテナ内でルートを確認するとデフォルトGWのIPアドレスが「172.17.0.1」となっていました。
CentOS8環境下でlocalhostを指定してSMTPの問い合わせをすることで、コンテナ内のPostfixへIPアドレス172.17.0.1へ返還されて問い合わせをしているようです。

  • CentOS8セグメント:192.168.0.1
  • コンテナGW:172.17.0.1
  • コンテナPostfix:172.17.0.1

PostfixのIPアドレス(172.17.0.2)

root@6b998d88b8c2:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

PostfixのデフォルトGW(172.17.0.1)

root@6b998d88b8c2:/# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      *               255.255.0.0     U     0      0        0 eth0

実際にコンテナのPostfixへのアクセスは以下の流れになるようです。

localhost(192.168.0.1)
↓
172.17.0.1(コンテナGW)※NAT
↓
172.17.0.2(Postfix)

Postfixへの問い合わせは「172.17.0.1」からくるので、このIPアドレスのアクセスを許可させます。

PostfixへアクセスするIPアドレスを許可

PostfixへアクセスするIPアドレスの許可は「main.cf」で実施します。

「mynetworks」へ許可するIPアドレス、「smtpd_recipient_restrictions」へ「permit_mynetworks」を追加します。

root@6b998d88b8c2:/# vi /etc/postfix/main.cf

# 172.17.0.1を追加
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 172.17.0.1

# 「permit_mynetworks」を追加
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

上記設定後、サービスを再起動します。

root@6b998d88b8c2:/# service postfix reload
 * Reloading Postfix configuration...                                                       [ OK ]

Postfix「main.cf」編集後に再度SMTP確認

上記で設定、サービス再起動後、コンテナから抜け再度SMTPの動作確認をします。

[root@mail ~]# telnet localhost smtp
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix (Ubuntu)
mail from:test@gmail.com
250 2.1.0 Ok
rcpt to:test1@test.co.jp
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
mail test

docker-postfix
.
250 2.0.0 Ok: queued as 3177340A98D7
quit
221 2.0.0 Bye
Connection closed by foreign host.

SMTPの動作確認が問題なく動いたことが確認できました。
Docker(Postfix)は簡単に構築できるのでぜひ参考にしてください。

エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Docker
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次