0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

さくらVPSでRockyLinuxのメールサーバを作る

Posted at

RockyLinuxでの postfix, dovecot設定ですが、
実際のところは、CentOSからの乗り換え作業です。

ついでにnamedも入れます。

環境

さくらのVPS 1G

説明で使うホスト名等
ホスト名 HSTNM
ドメイン名 EXAMPLE.COM
IPアドレス 123.456.789.012 (255を超えているのは説明上の故意です)

基本設定

swap設定

デフォルトではswap領域がありません。
この状態ではopendkimのインストールができないので、swap領域を作ります。

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
cp -p /etc/fstab /etc/fstab.org
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab

一旦リブートします。

reboot

アップデート

最新の状態に更新します。

sudo dnf update

ホスト設定

/etc/hostname

hstnm.example.com

/etc/resolv.conf

search example.com
nameserver DNSサーバのIPアドレス
nameserver DNSサーバのIPアドレス(セカンダリ)

DNS設定

ドメインのDNSサーバに登録して、反映されるのを待ってから、
さくらインターネットのサーバ設定で、IPv4の逆引き設定をします。

ユーザー作成

一般的にはLDAPなりADなりを使うと思いますが、単一サーバで完結させるケースで説明します。

旧環境で情報の取得

getent group > group.txt
getent passwd > passwd.txt
getent shadow > shadow.txt

一般ユーザー分だけ切り出します。
rockyが1000を使っているので注意が必要です。

passwd.txt

foo:x:1001:1001::/home/foo:/bin/bash
bar:x:1002:1002::/home/bar:/sbin/nologin
sudo newusers passwd.txt

ユーザーに一対一に対応するグループは明示的に作らなくても、勝手に作られます。

shadowは、
user:encrypted-password
の形式に置き換えてから、chpasswdで一括設定します。

sudo chpasswd --encrypted < shadow.txt

/etc/groupのwheelにrootになれるユーザーを追記します。

wheel:x:10:rocky,foo

インストール

suでの実行です。

dnf install postfix
dnf install dovecot
dnf config-manager --enable crb
dnf install epel-release
dnf install opendkim opendkim-tools
dnf install bind

postfix設定

/etc/postfix/main.cf
変更点

myhostname = hstnm.example.com
mydomain = example.com
myorigin = $mydomain

#inet_interface = localhost
inet_interface = all

#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks_style = host
mynetworks = 123.456.789.012, 127.0.0.0/8
relay_domains = $mydestination
recipient_delimiter = _
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
header_checks = regexp:/etc/postfix/header_checks

追加

# SASL
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

message_size_limit = 10485760
default_process_limit = 50

# DKIM
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

/etc/postfix/master.cf
変更点

submission inet n       -       n       -       -       smtpd
 -o smtpd_sasl_auth_enable=yes

/etc/postfix/header_checks
元サーバからコピーします。
独自設定のため、未掲載です。

dovecot設定

/etc/dovecot/dovecot.conf
変更点

protocols = pop3

/etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login
!include auth-system.conf.ext

/etc/dovecot/conf.d/10-mail.conf
変更点

mail_location = maildir:~/Maildir

/etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

SSL設定

さくらインターネット経由で、JRPSの一番安い証明書を使います。

openssl genrsa -aes256 2048 > private.key
openssl req -new -key private.key -out server.csr -sha256

パスフレーズは、適当な長さで設定します。

Countr Name: JP
State or Province Name: 都道府県
Locality Name: 市
Organization Name: 団体名
Organization Unit Name: 省略
Common Name: hstnm.example.com
Email Address: 省略

A challenge password: 省略
An optional company name: 省略

作成される server.csr を提出します。
メール方式にすると、commonnameのサーバにメールが送られるので、あらかじめメール受信が可能なことを確認しておきます。

server.csrと一緒に作成されたprivate.keyを変換して配置します。

openssl rsa -in private.key -out private.pem

/etc/pki/dovecot/private/dovecot.pem として置きます。

受け取った証明書に、中間証明書、ルート証明書をまとめます。

cat server.crt JPRS_DVCA_G4_PEM.cer scrootca2.txt > dovecot.pem

/etc/pki/dovecot/certs/dovecot.pem に置きます。

openssl s_client --connect hstnm.example.com:995 -showcerts

で外部から確認します。

opendkim設定

キー作成

/etc/opendkim/keys/example.com/240116.private にキーを秘密鍵を置きます。
240116は作成日ですが、何でも良いです。

sudo opendkim-genkey -b 2048 -D /etc/opendkim/keys/ -d example.com -s 240116
sudo chown -R opendkim:opendkim /etc/opendkim/keys

240116.txtが同時に作成されます。
これは、DNSの設定に追加します。

なお、キーはドメインと結びついていますが、ホストのIPなどには紐付いていませんので、環境を移行しても流用できます。

設定ファイル

/etc/opendkim.conf
変更点

Mode  sv
Socket        inet:8891@localhost
#Socket local:/run/opendkim/opendkim.sock
SoftwareHeader        no
#KeyFile      /etc/opendkim/keys/default.private
KeyTable      /etc/opendkim/KeyTable
SigningTable  refile:/etc/opendkim/SigningTable
ExternalIgnoreList    refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

/etc/opendkim
/etc/opendkim/KeyTable
末尾に追加

240116._domainkey.example.com example.com:240116:/etc/opendkim/keys/example.com/240116.private

/etc/opendkim/SigningTable
末尾に追加

*@example.com 240116._domainkey.example.com

/etc/opendkim/TrustedHosts
変更なし

まとめて有効化

systemctl enable postfix dovecot opendkim

bind設定

手元の作業メモです。

/etc/named.conf
/var/named

systemctl start named
systemctl enable named
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?