メールサーバー構築(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自動起動設定
