ラズパイで作る自宅WEBサーバ構築
第9回 メールサーバ(Postfix/Dovecot) 設定・後編 2019.11.21
今回は受信サーバー(dovecot)の設定を行います。
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
受信サーバー(dovecot)の構築
POP3またはIMAPによるメール受信ができるようにするために Dovecotをインストールします。
パッケージの有無を確認します
$ dpkg --get-selections | grep dovecot
利用できるパッケージのバージョンの確認します
$ apt-cache show dovecot-core
Package: dovecot-core
Architecture: arm64
Version: 1:2.2.33.2-1ubuntu4
$ apt-cache show dovecot-imapd
Package: dovecot-imapd
Architecture: arm64
Version: 1:2.2.33.2-1ubuntu4.3
$ apt-cache show dovecot-pop3d
Package: dovecot-pop3d
Architecture: arm64
Version: 1:2.2.33.2-1ubuntu4
dovecot をインストールします
$ sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d
※独自 SSL 証明書を作成されるか問われますが、必要ならば後でも作成できるので、「いいえ」を選択します。
$ dovecot --version
2.2.33.2 (d6601f4ec)
/etc/dovecot/dovecot.conf の編集
$ sudo vi /etc/dovecot/dovecot.conf
#listen = *, ::
↓IPv4のみListenする
listen = *
SMTP-Authの設定
SMTP-AUTHの実装には、認証システムを提供するライブラリ(SASL)が必要となります。
SMTPサーバでサポートされているSASL認証プラグインの表示します。
$ postconf -a
cyrus
dovecot
SASLにはCyrus-SASLとDovecot-SASLがありますが、ここではDovecot-SASLを用います。
Postfix の設定ファイルに SMTP-Auth用 に Dovecot を指定します。
$ sudo vi /etc/postfix/main.cf
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
/etc/dovecot/conf.d/10-auth.conf の編集
$ sudo vi /etc/dovecot/conf.d/10-auth.conf
#disable_plaintext_auth = yes
↓平文テキストでも認証可能とする
disable_plaintext_auth = no
auth_mechanisms = plain login ← この1行を追記します(平文パスワードを利用)
/etc/dovecot/conf.d/10-master.conf の編集
$ sudo vi /etc/dovecot/conf.d/10-master.conf
# Postfix smtp-auth
#unix_listener /var/spool/postfix/private/auth {
# mode = 0666
#}
↓コメントを外して編集
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
/etc/dovecot/conf.d/10-mail.conf の編集
Postfix の home_mailbox と同じ場所をメールボックスの保存先として指定します。
$ sudo vi /etc/dovecot/conf.d/10-mail.conf
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
↓コメントを外して編集
mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-ssl.conf の編集
今回はお互いブロードバンドルータ内側にある dovecot とメール送受信アプリ(パソコン)との間でのやりとりなので、
SSL設定は行いません。
$ sudo vi /etc/dovecot/conf.d/10-ssl.conf
# 6行目:コメントを解除して変更します(SSLなし)
ssl = no
# 12,13行目:コメントにします
#ssl_cert = /etc/dovecot/dovecot.pem
#ssl_key = /etc/dovecot/private/dovecot.pem
Dovecot を 起動します
$ sudo /etc/init.d/postfix restart
$ sudo /etc/init.d/dovecot start
送信テスト - サーバーに格納されたメールの表示
$ telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ns.example.jp ESMTP unknown
HELO example.jp
250 ns.example.jp
MAIL FROM: ubuntu@example.jp
250 2.1.0 Ok
RCPT TO: testuser@example.jp
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: ubuntu@example.jp
Subjet: test
Hello world.
.
250 2.0.0 Ok: queued as DCFC0986FB
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
POP3 でアクセスしてみます。
$ telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot (Ubuntu) ready.
USER testuser
+OK
PASS testpasswd
+OK Logged in.
LIST
+OK 1 messages:
1 3354
.
QUIT
+OK Logging out.
Connection closed by foreign host.
メールクライアントの設定
Windows などのメール送受信アプリの設定は下記のようになります。
また、メールの送受信はブロードバンドルータの内側のWindowsパソコンにインストールしたメール送受信アプリで実施している場合です。
メールアドレス | testuser@example.jp |
プロトコル | POP3:110/✔SSLを使用しない IMAP4:143 |
受信用サーバ | 192.168.11.21 |
SMTPサーバ | 192.168.11.21 |
ユーザID | testuser |
パスワード | testpasswd |
送信 | ✔SMTP認証(SMTP AUTH):587 / 認証方式:PLAIN
✔SSLセッションの開始にSTARTTLSコマンドを使用
(あるいは✔SSLを使用しない) |
※自己認証証明書なので、メールアプリで警告がでることがあります。
重要なメールの送受信を行わないのであれば、SSLを使用しないにしてもよいかもしれません。
迷惑メール対策
メールサーバ設定の最後に、迷惑メール対策に関して記載します。
Postfix 設定ファイルに追記します。
$ sudo vi /etc/postfix/main.cf
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
check_helo_access hash:/etc/postfix/spammers,
reject_invalid_hostname,
permit
送信元による拒否設定
$ sudo vi /etc/postfix/spammers
220.181. REJECT ← IPアドレス 220.181. で始まる送信元を拒否
.163.com REJECT ← 163.com ドメインの送信元を拒否
$ sudo /usr/sbin/postmap hash:/etc/postfix/spammers
メールヘッダーによる拒否設定
$ sudo vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
$ sudo vi /etc/postfix/header_checks
例)メールヘッダ Receive行のLAN内IPアドレスを非表示にする
/^Received:\sfrom .*\[127\.0\.0\.1\]|^Received:\sfrom .*\[192\.168\.*\]/ IGNORE
例)一般的なスパムとされるローカルアドレス経由を拒否する
/^Received:.*by 127\.0\.0\.1/ REJECT
例)グリニッジ標準時を利用して海外からのメールを拒否(日本は+0900)
/^Date:.*-0500/ REJECT
/^Date:.*-0600/ REJECT
/^Date:.*-0700/ REJECT
/^Date:.*-0800/ REJECT
/^Date:.*-0900/ REJECT
/^Date:.*+0800/ REJECT
変更を反映させます
$ sudo /usr/sbin/postalias /etc/postfix/header_checks
メールサーバへの接続元による拒否設定
$ sudo vi /etc/postfix/reject_client
45.227.253. REJECT ← 45.227.253. で始まるIPアドレスの接続元を拒否
$ sudo vi /etc/postfix/main.cf
smtpd_recipient_restrictions=
permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:/etc/postfix/reject_client,
reject_unauth_destination
$ sudo postmap hash:/etc/postfix/reject_client
Postfixを再起動します
$ sudo /etc/init.d/postfix restart
オープンリレー チェック(Opne Relay Check/不正中継テスト)
http://check.jippg.org/
様々な設定 - RBL(Realtime Black List)
RBLは、既知のスパム発信元のIPアドレスを集めたリストです。
メールサーバは、RBLサーバに接続してIPアドレスをチェックし、ブロックすることが可能です。
Postfix の設定ファイル (/etc/postfix/main.cf) に追記します。
$ sudo vi /etc/postfix/main.cf
smtpd_recipient_restrictions =
....
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
....
とても便利だとは思うのですが、注意も必要です。
RBLはメールが着信するたびに参照されますが、外部参照ですので回線が混雑している場合に処理に遅延が発生する可能性があります。
また、無料RBLの場合、そのサービスが終了したことに気付かないでいると、「参照先が見つかりません」というメッセージをPostfixがシステム管理者宛に吐き出します。迷惑メールが大量に届いていた場合、莫大なメッセージが管理者宛にメール送信されます。
管理者宛メールを携帯に転送していた場合には悲惨です。真夜中に突然、着信メールが止まらない~といった最悪の状態を招きかねません!
メール着信確認
実際の運用ではリアルタイムに着信を確認できると非常に便利なので、
サーバーで受信したメールをWEBメールへ転送して、スマホで確認できるようにするとよいかもしれません。
$ sudo vi /home/testuser/.forward
xxxxxxxx@yahoo.co.jp
Yahoo!メールやgmailは、メールサーバーの迷惑メール対策で取りこぼしたスパムメールもフィルターしてくれるので便利です。
Windows10 で Telnet コマンドを有効にする場合
LAN内のパソコンから、telnet コマンドを用いて確認する場合の設定です。
コントロールパネル→プログラム→プログラムと機能・Windowsの機能の有効化または無効化→Telnetクライアント」のチェックボックスを有効にします。
|