Ubuntu(Indigo) Postfix+Dovecot

とりあえず確認方法として以下の通り。他のレンサバで実行してみた。

MTA確認
alternatives –display mta

sendmailの場合、
“/etc/alternatives/mta -> /usr/sbin/sendmail.sendmail”

Postfixの場合、
“/etc/alternatives/mta -> /usr/sbin/sendmail.postfix”

もし切り替えるなら
alternatives –config mta

Courier-IMAPのバージョン
/usr/lib/courier-imap/bin/imapd –version

ドメイン取得

今回はムームーでドメイン取得。

ドメイン操作>ムームーDNS
対象ドメインの変更をクリック。

サブドメイン / 種別 / 内容
* / TXT / v=spf1 +ip4:xxx.xxx.xxx.xxx ~all
* / A / xxx.xxx.xxx.xxx
空白 / TXT / v=spf1 +ip4:xxx.xxx.xxx.xxx ~all
空白 / A / xxx.xxx.xxx.xxx
空白 / MX / domain.com
このような感じで登録。

Postfix

・インストール

sudo apt install postfix

Please select the mail server configuration type that best meets your needs
と表示される。

Internet Site(インターネットサイト)
を選択。

次の画面では、
The “mail name” is the domain name used to “qualify” _ALL_ mail address …
等々表示される。

ここではドメイン名を入力。

・設定

sudo vim /etc/postfix/main.cf

myhostname = ドメイン名
に変更する。

DNSで正引きできないと、宛先のメールサーバーから受信拒否されるので、DNSで正引きできる(=Aレコードが存在する)

ちなみに、完全修飾ドメイン名を指定する。
(サブドメインなどを省略しないことアドレス)

mydomain / 指定無し
指定しなければ、デフォルトで$myhostnameから算出される。

myorigin = /etc/mailname
投函されたメールがどのドメインから来るように見えるか。

inet_interfaces = all
リッスンするインターフェース。送信のみで受信しないならlocalhostでもOK。

inet_protocols = ipv4
IPv4のみ

mydestination = $myhostname
自分が宛先(最終)になる場合のドメイン名を指定する。 メールアドレスの右側が mydestinationに一致すると、そのメールは他のサーバには配送せず処理する。 そこで存在しないユーザ宛の場合、エラーになり、送信者にエラーメールを返す。

mynetworks = 127.0.0.0/8 192.168.12.0/24
メールの転送することができる(許可するクライアント)IPアドレスリストを指定する。もし0.0.0.0/0 として、ufwで25を許可すると、スパムメールの踏み台となる。

今回はVPNで固定IPなので、
mynetworks = 127.0.0.0/8 192.168.12.2
と言う感じでもOK。

home_mailbox = mail/
これで/home/ubuntu/mailにメールが入る。

ちなみに、デフォルト状態では環境にもよるが、
/var/mail/ユーザ名
にmbox形式で入る。

再起動
sudo systemctl restart postfix

起動設定
sudo systemctl enable postfix

・ポート開放

sudo ufw allow from 192.168.12.2 to any port 25 proto tcp
sudo ufw reload

ここまでやると、ユーザー名@ドメインで受信できる。
必要ならユーザーを追加する。

・ここで試しに送信。

> sendmail -t
From: xxx
To: xxx
Subject: xxx
xxx
. (最後は.でEnter)

・サブミッションポート有効化する場合

sudo vim /etc/postfix/master.cf

コメントアウト削除(今回は不要)
submission inet n – n – – smtpd

今回はSASL認証を利用しない(クライアントとVPNでつながっているので、mynetworksでローカルアドレスのみ許可しているが、通常はSASL認証を設定する)が、通常は以下のように設定する。

-o smtpd_sasl_auth_enable=yes
SMTP Authを有効

-o smtpd_recipient_restrictions = permit_sasl_authenticated, reject
転送要求の可否(SMTP Auth で認証が確認された接続を許可)

-o smtpd_client_restrictions = permit_sasl_authenticated, reject
接続要求の可否(SMTP Auth で認証が確認された接続を許可)

・ポート開放(今回は不要)

sudo ufw allow 587/tcp
sudo ufw reload

Dovecot

ここまでデフォルトユーザーで作業してきたが、メールアドレスを作成(ユーザー作成)して作業する。

ユーザー作成
sudo useradd -s /sbin/nologin okamura

パスワード設定(ワンライナー)
pass=$(head /dev/urandom | tr -dc a-km-np-z1-9 | head -c 13); sudo echo okamura:${pass} | sudo chpasswd; sudo echo $pass;

ここでokamuraを作成した。

Maildir作成
/home/okamura/mail
にディレクトリを作成し、所有者を変更

sudo chown -R okamura:okamura okamura

・インストール

sudo apt install dovecot-common dovecot-pop3d
必要なら、 dovecot-imapd

・設定

etc/dovecot/conf.d
が基本ディレクトリ

IPv6をListenしない
sudo vim /etc/dovecot/dovecot.conf

listen = *

sudo vim /etc/dovecot/conf.d/10-master.conf
port = 110

プレーンテキスト認証も許可
sudo vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no

ディレクトリを設定
sudo vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/mail

起動
sudo systemctl start dovecot
sudo systemctl enable dovecot

・ポート開放

sudo ufw allow from 192.168.12.2 to any port 110 proto tcp
sudo ufw status

メーラーからの接続

VPNが192.168.12.1でクライアントが192.168.12.2

SoftEther Ubuntu/Win インストール

になっている状態で、
SMTP/POP3サーバー:192.168.12.1
ユーザーID:okamura
で接続できる。