Postfixを使ってローカルホストにテストメールを送信する方法

## はじめに
自分自身に対してメール送信できるかのテストをしました。

メールスプールの説明は以下の記事を参考にしてください。
https://qiita.com/gama1234/items/102789e8117190e1d95c

### 前提条件
VirtualBoxにて実行しました
## 手順

rootユーザーに昇格する
```
$ sudo su -
```
postfixをインストールする
```
# yum install postfix
```
念のため、メール関連のポートを空けました。
```
# firewall-cmd --permanent --add-port=25/tcp
# firewall-cmd --permanent --add-port=465/tcp
# firewall-cmd --permanent --add-port=587/tcp
# firewall-cmd --reload
```
postfixの設定ファイルは以下の設定にしています。
```
# cat /etc/postfix/main.cf | grep -v ^# | grep -v ^$
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = localhost
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases


debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
smtpd_banner = $myhostname ESMTP unknown
debug_peer_level = 2
relayhost =
```
chatGPTに各パラメータの意味を聞きました
```
# 基本設定
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.localdomain  # 仮のホスト名
mydomain = localdomain         # 仮のドメイン名
myorigin = $myhostname

# ネットワークインタフェース設定
inet_interfaces = localhost
inet_protocols = ipv4

# 宛先設定
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps = 
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8

# エイリアスマップ
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

# メールボックスの設定
home_mailbox = Maildir/
luser_relay = unknown_user@localhost

# SMTPバナー
smtpd_banner = $myhostname ESMTP unknown
debug_peer_level = 2

# ローカルSMTPサーバを使用するための設定
relayhost =

```



postfixのサービスを再起動しました
```
systemctl restart postfix
```

テストメールを自分自身のホストに送信しました
```
# echo "This is a test mail from postfix" | mail -s "Test Mail" root@localhost
```
メールが届いていることを確認しました
```
# cat /var/spool/mail/root


From root@localhost.localdomain  Sat Jun  8 09:34:14 2024
Return-Path: <root@localhost.localdomain>
X-Original-To: root@localhost.localdomain
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
        id 2DB0586C66B; Sat,  8 Jun 2024 09:34:14 +0900 (JST)
Date: Sat, 08 Jun 2024 09:34:14 +0900
To: root@localhost.localdomain
Subject: Test Mail
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20240608003414.2DB0586C66B@localhost.localdomain>
From: root@localhost.localdomain (root)

This is a test mail from postfix

From MAILER-DAEMON  Sun Jun  9 09:45:48 2024
```
## まとめ
MTAはメール送信するソフトでMailTransferAgentの略です。
PostfixはMTAです。SMTPはメール送信の際のプロトコルですね。

メールスプールにはシステムの通知が受信されます。
ローカルメールroot@localhostに送信したものは
メールスプールにメッセージが表示されることを学びました。