メールサーバー · 1 min read · Oct 05, 2025
仮想ドメインとユーザーを持つ完全なメールサーバーソリューション (Debian Etch, Postfix, Mysql, Dovecot, DSpam, ClamAV, Postgrey, RBL) - ページ 9
VI. 安全でないIMAP
さて、かなり堅牢なメールサーバーのセットアップができました。メールは受信し、さまざまなスパム対策手順を経て、ウイルスチェックを受けた後、内部サーバーの仮想ユーザーのディレクトリにきれいに配置されます。しかし… ユーザーはどのようにして自分のメールにアクセスするのでしょうか?
良い質問です。答えはユーザーの場所によって異なります。とりあえず、ユーザーが (A) ローカル(内部)ネットワーク上にいるか、(B) ウェブサーバーへの安全な接続を介してメールにアクセスしていると仮定しましょう。どちらの場合でも、IMAPが実行されている必要があります。すでにポストマンサーバーには完全に機能するIMAPサーバー(Dovecot)がインストールされているので、そのサーバーを使用してアクセスを行います。
/etc/dovecot/dovecot.conf にあるDovecotの設定ファイルを開き、次のように設定します。すでに多くのデフォルト設定が行われている可能性があるため、特定のセクションのコメントを外し、少しの変更を加えるだけで済むでしょう。
## Dovecot設定ファイル
#
base_dir = /var/run/dovecot/
#
# imap imaps pop3 pop3s(SSL用に設定されている場合はimapsとpop3sを使用)
protocols = imap
#
# SSLを使用する場合はssl_listenステートメントのコメントを外し、listenをコメントアウト
protocol imap {
listen = *:143
# ssl_listen = *:993
}
#protocol pop3 {
#listen = *:110
# ssl_listen = *:995
#}
#
log_timestamp = "%Y-%m-%d %H:%M:%S "
syslog_facility = mail
#
# SSLを使用する場合はこれらのコメントを外す
#ssl_cert_file = /etc/ssl/mycompany/mailserver/mail-cert.pem
#ssl_key_file = /etc/ssl/mycompany/mailserver/mail-key.pem
#ssl_ca_file = /etc/ssl/mycompany/ca/mycompany.pem
#ssl_verify_client_cert = yes
#ssl_parameters_regenerate = 168
#verbose_ssl = no
#
# メールボックスの場所
mail_location = maildir:/vmail/%d/%u
#
mail_extra_groups = mail
mail_debug = no
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
#
protocol imap {
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
imap_max_line_length = 65536
}
#protocol pop3 {
#login_executable = /usr/lib/dovecot/pop3-login
#mail_executable = /usr/lib/dovecot/pop3
#pop3_uidl_format = %08Xu%08Xv
#}
protocol lda {
postmaster_address = [email protected]
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
#
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
#
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = nobody
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = vmail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
#
# クライアント証明書を使用したい場合は、これらの行を使用
# ssl_require_client_cert = yes
# ssl_username_from_cert = yes
}注意:上記の設定をそのままコピーしても動作するとは限りません!上記の変更を自分の設定に組み込む必要があります。
Dovecotの設定はほぼ完了ですが、Postfixの設定と同様に、MySQLの設定も組み込む必要があります。
/etc/dovecot/dovecot-sql.conf ファイルを開き、次の内容が含まれていることを確認します。
driver = mysql
connect = host=sql-1.internal.example.com dbname=virtual_mail user=vmail_user password=vmail_user_password
# MD5の新しい名前はMD5-CRYPTなので、バージョンによってはこれを変更する必要があります
default_pass_scheme = MD5
# メールボックスを取得
user_query = SELECT '/vmail/%d/%n' AS home, 'maildir:/vmail/%d/%n' AS mail, 150 AS uid, 8 AS gid, CONCAT('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
# パスワードを取得
password_query = SELECT username AS user, password, '/vmail/%d/%n' AS userdb_home, 'maildir:/vmail/%d/%n' AS userdb_mail, 150 AS userdb_uid, 8 AS userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
# 認証にクライアント証明書を使用する場合は、上記をコメントアウトし、以下のコメントを外します
#password_query = SELECT null AS password, '%u' AS userこの文書にプレーンテキスト形式でMySQLパスワードを保存しているため、私たちだけがそれを読めるようにする必要があります!
# chmod 600 /etc/dovecot/*.conf
# chown vmail /etc/dovecot/*.conf内部/安全でないDovecotの設定はこれで完了です!続いて、dovecotサービスを再起動します:
# invoke-rc.d dovecot restart… そして、内部/ウェブメールユーザーは今、postman.internal.example.comでメールを確認できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。