Postfixの設定

まずはPostfixのインストールを行います。

Bash
dnf install -y

/etc/postfix/main.cfを編集し、以下の項目を設定します。

Bash
# 自身のホスト名を記載する。
myhostname = mail.domain.internal

# 自身のドメイン名を記載する。
mydomain = domain.internal

# 待ち受けるネットワークインターフェースを指定する。all、IPアドレス等。
inet_interfaces = all

# 使用するプロトコルを指定する。all/ipv4/ipv6
inet_protocols = ipv4

# 他のマシンに転送せずにローカルに配送するドメインを指定する。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 利用するPCのネットワークを指定する。指定したネットワークからのメールを転送する。
mynetworks = 127.0.0.0/8 172.16.0.0/24

# 今回はPOPを使用するためMaildirを指定。IMAPの場合はMailBoxを指定する。
home_mailbox = Maildir/

# LMTPプロトコルによりUNIXドメインソケットを使用してファイルベースの通信路を使用する。
virtual_transport = lmtp:unix:/var/spool/postfix/private/dovecot-lmtp

設定が完了したら、以下のコマンドで構文チェックを行います。

Bash
postfix check

特にエラーが出なければ、サービスを起動します。

Bash
systemctl start postfix
systemctl enable postfix

これで、postfixの設定は完了です。

Dovecotの設定

ここからはDovecotの設定を行います。
まずは/etc/dovecot/conf.d/10-mail.confを編集し、メールボックスの設定を行います。

Bash
# 30行目あたり、メールボックスの場所を~/Maildirに設定する。
mail_location = maildir:~/Maildir

次に、/etc/dovecot/conf.d/10-master.confを編集し、service lmtpの項目を以下のように変更します。unix_listenerのファイルパスはPostfixのvirtual_transportで指定したパスと合わせてください。

Bash
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0666
    user = postfix
    group = postfix
  }

  # Create inet listener only if you can't use the above UNIX socket
  #inet_listener lmtp {
    # Avoid making LMTP visible for the entire internet
    #address =
    #port =
  #}
}

次に、/etc/dovecot/conf.d/10-auth.confを編集し、100行目当たりにあるauth_mechanismsの項目を平文ログインを許可するように設定します。また、OSユーザー認証を使用するには122行目当たりにある!include auth-system.conf.extを有効にしておきます。

Bash
# 100行目あたり
auth_mechanisms = plain login

# 122行目、
!include auth-system.conf.ext

OSでIPv6を使用しない設定にしているとサービスが起動できないので、/etc/dovecot/dovecot.confを編集し、IPv6を使用しないように設定しておきます。

Bash
listen = *

設定が完了したら、サービスを起動する。

Bash
systemctl start dovecot
systemctl enable dovecot

ファイアウォールの設定

firewalldを起動している場合は必要なポートを開放します。
今回はPostfixで25番ポート、Dovecotで110番ポートを使用します。
以下のコマンドを実行し、ポートを開放しましょう。設定したらfirewall-cmd --reloadで反映します。

Bash
firewall-cmd --add-port=25/tcp --permanent
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --reload

ユーザー作成

メールアカウントとして使用するためのユーザーとディレクトリを作成していきます。ここでは、user1を作成することにします。

Bash
useradd user1
mkdir -p /home/user1/Maildir/{cur,new,tmp}
chown -R user1:user1 /home/user1/Maildir/
chmod -R 700 /home/user1/Maildir/
passwd user1

メールクライアントの設定

ユーザー作成が完了したので、メールクライアントの設定を行っていきます。。今回はThunderbirdを使用してアカウントの追加を行います。

POP3を選択していきます。

ユーザー作成時に設定したパスワードを記載します。

メール送信テスト

メールを送信する場合は、mailxあるいはmailコマンドを使用します。Alma Linux 9.6の環境では、s-nailパッケージをインストールすることで使用可能でした。この辺は適宜自身の環境に合わせてください。

Bash
dnf install -y s-nail

インストールが完了したら、以下のコマンドを実行して作成したメールアカウントに対してメールを送信します。

Bash
echo "hello world." | mail -s "test send" user1@domain.internal

以下のように、メールが受信できていることが確認できました。

以上でメールサーバーの設定は完了です。

その他、SSLに対応した場合の手順などは別途ご紹介します。