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アプリケーションだと、指定が出来るかと思います。
もしくは、最初から、プログラムに組み込まれている場合もあります。
「envelope FROM」に関しては、上記の記事をご覧下さい。