メールサーバー構築(Postfix+Dovecot)(AlmaLinux)

提供:あわ自由帳

メインページ > Category:自宅サーバー > AlmaLinux 8 で自宅サーバー構築  > メールサーバー構築(Postfix+Dovecot)(AlmaLinux)

メールサーバーを構築する場合、送信メールサーバー(SMTPサーバー)と受信メールサーバー(POP/IMAPサーバー)の構築が必要となる。 ここでは、送信メールサーバーにはPostfix、受信メールサーバーにはDovecotを採用する。

Postfixインストール

Postfix をインストールして SMTPサーバーを構築します。 SMTP は 25/TCP を使用します。

Postfix は CentOS を「Minimal Install」した場合でもデフォルトでインストールされますが、もしインストールされていない場合はインストールしてください。

[root@host4 ~]# dnf -y install postfix

cyrus-sasl-plain と cyrus-sasl-md5 が、もしインストールされていない場合はインストールしてください。

[root@host4 ~]# dnf -y install cyrus-sasl-plain
[root@host4 ~]# dnf -y install cyrus-sasl-md5

Postfix設定

Postfix設定

[root@host4 ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
# INTERNET HOST AND DOMAIN NAMES
# 
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = mail.sudachi.jp ← 追加(自FQDN名を指定)

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
mydomain = sudachi.jp ← 追加(自ドメイン名を指定)
# SENDING MAIL
# 
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites.  If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
#myorigin = $mydomain
myorigin = $mydomain ← 追加(ローカルからのメール送信時の送信元メールアドレス@以降にドメイン名を付加)

# RECEIVING MAIL

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
inet_interfaces = all ← 変更(外部からのメール受信を許可)

#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ← 変更(自ドメイン宛メールを受信できるようにする)
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain

# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
home_mailbox = Maildir/ ← 追加(メールボックス形式をMaildir形式にする)

# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP unknown ← 追加(メールサーバーソフト名の隠蔽化)

## 以下を最終行へ追加
# SMTP-Auth設定
smtpd_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination

# 受信メールサイズ制限(10MB=10*1024*1024に制限)
message_size_limit = 10485760

SMTP-Auth設定

SMTP-Auth用ユーザ名、パスワードにシステムのユーザ名、パスワードを使用する場合)

[root@host4 ~]# dnf -y install cyrus-sasl ← cyrus-saslインストール

[root@host4 ~]# systemctl start saslauthd ← saslauthd起動

[root@host4 ~]# systemctl enable saslauthd ← saslauthd自動起動設定

Postfixの文法チェック

[root@host4 ~]# postfix check
[root@host4 ~]#

エラーがないときは何も表示されません。

Postfixの起動

[root@host4 ~]# systemctl restart postfix
[root@host4 ~]# systemctl enable postfix

Postfixのメールログ確認

[root@host4 ~]# less /var/log/maillog

Dovecotインストール

Dovecot をインストールして POP/IMAP サーバーを構築します。 POP は 110/TCP, IMAP は 143/TCP を使用します。

[root@host4 ~]# dnf -y install dovecot

Dovecot設定

Dovecot設定

10-mail.conf編集

[root@host4 ~]# vi /etc/dovecot/conf.d/10-mail.conf

# Location for users' mailboxes. The default is empty, which means that Dovecot
# tries to find the mailboxes automatically. This won't work if the user
# doesn't yet have any mail, so you should explicitly tell Dovecot the full
# location.
#
# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u)
# isn't enough. You'll also need to tell Dovecot where the other mailboxes are
# kept. This is called the "root mail directory", and it must be the first
# path given in the mail_location setting.
#
# There are a few special variables you can use, eg.:
#
#   %u - username
#   %n - user part in user@domain, same as %u if there's no domain
#   %d - domain part in user@domain, empty if there's no domain
#   %h - home directory
#
# See doc/wiki/Variables.txt for full list. Some examples:
#
#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
#mail_location =
mail_location = maildir:~/Maildir ← 追加(メールボックス形式をMaildir形式とする)

10-auth.conf編集

[root@host4 ~]# vi /etc/dovecot/conf.d/10-auth.conf

# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
#disable_plaintext_auth = yes
disable_plaintext_auth = no ← 追加(プレインテキスト認証を許可)

10-ssl.conf編集

[root@host4 ~]# vi /etc/dovecot/conf.d/10-ssl.conf

# SSL/TLS support: yes, no, required. 
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
ssl = no ← SSL接続無効

Dovecot起動

[root@fost4 ~]# systemctl start dovecot ← Dovecot起動

[root@host4 ~]# systemctl enable dovecot ← Dovecot自動起動設定