VPSやクラウドのサーバーを送信専用として設定をする

WordPressなどで、メールを送る場合など、「メールサーバー」を指定する場合があります。
Gmailなどを指定する方も多いかと思いますが、WordPressが入っているサーバー自体をメールサーバとして、設定する場合の設定メモです。

Ubuntu 20.04 での設定例ですが、他の、CentOS系でも大丈夫です。

今回、postfixを導入して、送信専用にしてみましょう。

SMTP(postfix)があるかのチェック

# telnet localhost 25
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

↑SMPT(postfix)は、入っていないようです。
もしくは、起動していないだけかもしれません。

postfixインストール

# apt install postfix
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libcurl3-gnutls
Use 'apt autoremove' to remove it.
Suggested packages:
  procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin
  | dovecot-common resolvconf postfix-cdb postfix-doc
The following NEW packages will be installed:
  postfix

↑インストール途中に、上記のような画面が出てきます。

「Internet Site」を選び、「OK」を押します。

↑「hostname」コマンドで、表示される英数字が表示されるかと思います。
そのまま、「OK」を押します。

After modifying main.cf, be sure to run 'systemctl reload postfix'.

↑「main.cf」を変更したら、「systemctl reload postfix」を実行してね。
というメッセージが、途中で、表示されています。

(略)
Processing triggers for systemd (245.4-4ubuntu3.15) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for rsyslog (8.2001.0-1ubuntu1.3) ...
Processing triggers for libc-bin (2.31-0ubuntu9.7) ...

↑インスト-ルが完了しました。

Postfix 設定変更

# vi /etc/postfix/main.cf

inet_interfaces = all
 ↓
inet_interfaces = localhost

↑ここを変更をします。

# systemctl reload postfix

↑変更を反映させます。

# tail /var/log/mail.log

postfix/master[3220720]: reload -- version 3.4.13, configuration /etc/postfix
postfix/master[3220720]: warning: service smtp: ignoring inet_interfaces change
postfix/master[3220720]: warning: to change inet_interfaces, stop and start Postfix

↑「inet_interfaces」を変更したら、「stop」「start」を実行してね。
ということなので

# systemctl stop postfix
# systemctl start postfix

# tail /var/log/mail.log

postfix/postfix-script[3221365]: stopping the Postfix mail system
postfix/master[3220720]: terminating on signal 15
postfix/postfix-script[3221917]: starting the Postfix mail system
postfix/master[3221919]: daemon started -- version 3.4.13, configuration /etc/postfix

↑と、正常に稼働したようです。

SMTPチェック

「inet_interfaces」変更前

他のサーバーからポートの状態をチェックします。

# nmap 192.168.XX.XX
Starting Nmap 7.80 ( https://nmap.org ) at 2022-XX-XX XX:XX JST
Nmap scan report for 192.168.XX.XX
Host is up (0.00082s latency).
Not shown: 996 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

↑「inet_interfaces」変更前
他のサーバーからは、25番ポートがオープンとなっています。

# telnet 192.168.XX.XX 25
Trying 192.168.XX.XX...
Connected to 192.168.XX.XX.
Escape character is '^]'.
220 XXXXXX ESMTP Postfix (Ubuntu)

↑同じく、他のサーバーから、telnetでも、反応をします。

「inet_interfaces」変更後

変更後、他のサーバーから、チェックをしてみます。

# nmap 192.168.XX.XX
Starting Nmap 7.80 ( https://nmap.org ) at 2022-XX-XX XX:XX JST
Nmap scan report for 192.168.XX.XX
Host is up (0.00047s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds

↑25番ポートが見えなくなりました。

# telnet 192.168.XX.XX 25
Trying 192.168.XX.XX...
telnet: Unable to connect to remote host: Connection refused

↑telnetでも反応が無くなりました。

ubuntuの「ufw」コマンドで、設定ができる、firewallでも、25番ポートなど、セキュリティの設定がありますので、ご確認ください。

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 XXXXXX ESMTP Postfix (Ubuntu)

↑と、localからは、反応します。

ソフトからの設定

これで、同じサーバーで、稼働するソフトからは、「SMTPサーバー」を「localhost」として、
送信が可能です。

メールが届かない場合

「envelope FROM」の指定

これを指定しないと、メールが届かない可能性もあります。

気の利いたWEBアプリケーションだと、指定が出来るかと思います。

もしくは、最初から、プログラムに組み込まれている場合もあります。

WordPress、お問い合わせフォームから、メールが届かない場合
WordPressの「Contact Form 7」などのプラグインで、設定をしているが、メールが届かない! という場合があります。 特に、宛先が、Gmailの場合が多いように感じます。 これは、メール送信時の「envelop...

「envelope FROM」に関しては、上記の記事をご覧下さい。

 

タイトルとURLをコピーしました