DovecotでPostfixEメールサーバーをセットアップする方法:動的MaildirとLMTP
序文
このチュートリアルは、 Dovecot を使用してPostfix電子メールサーバーをセットアップする方法に基づいており、最初の部分が終了した場所を取り上げます。
最初にそのチュートリアルを実行してください。
この記事では、dovecotのLMTPサーバーを配信メカニズムとして使用してメールボックスをシステムアカウントから切り離し、postgresqlを使用してユーザーレコードを保持します。
これ以上のメールは標準のLinuxメールボックスに配信されません。
最初のガイドと同様に、このチュートリアルはDebian 7 wheezy、Postfix 2.9、およびdovecot 2.1(+ Postgresql 9.1)に基づいています。
パッケージ
postgresqlをインストールします:
# aptitude install postgresql postfix-pgsql
バージョン2.1のdovecotには、すでにpgsqlが有効になっているはずです。 dovecotがモジュール化されているシステムを使用している場合は、
# aptitude install dovecot-lmtpd dovecot-pgsql
必要なモジュールをインストールします。
Postgresデータベースのセットアップ
すでにpostgresセットアップを実行している場合は、必要に応じてこれを調整してください。 しかし、postgresの新規インストールから、データベースへのdovecotアクセスを許可できるように認証を設定しましょう。 以下を追加します /etc/postgresql/9.1/main/pg_ident.conf
:
mailmap dovecot mailreader
mailmap postfix mailreader
mailmap root mailreader
そして、次の /etc/postgresql/9.1/main/pg_hba.conf
(警告:必ず直後に追加してください Put your actual configuration here
コメントブロック! そうしないと、デフォルトのエントリの1つが最初にキャッチされ、データベース認証が失敗する可能性があります。 )
local mail all peer map=mailmap
次にpostgresqlをリロードします(service postgresql reload
). 次に、データベースを設定します。
# sudo -u postgres psql
postgres=# CREATE USER mailreader;
postgres=# REVOKE CREATE ON SCHEMA public FROM PUBLIC;
postgres=# REVOKE USAGE ON SCHEMA public FROM PUBLIC;
postgres=# GRANT CREATE ON SCHEMA public TO postgres;
postgres=# GRANT USAGE ON SCHEMA public TO postgres;
postgres=# CREATE DATABASE mail WITH OWNER mailreader;
postgres=# \q
# sudo psql -U mailreader -d mail
postgres=# \c mail
mail=# CREATE TABLE aliases (
alias text NOT NULL,
email text NOT NULL
);
mail=# CREATE TABLE users (
email text NOT NULL,
password text NOT NULL,
maildir text NOT NULL,
created timestamp with time zone DEFAULT now()
);
mail=# ALTER TABLE aliases OWNER TO mailreader;
mail=# ALTER TABLE users OWNER TO mailreader;
mail=# \q
次に、ルートシェルから始めて、次のような仮想メールボックスを追加できます。
# doveadm pw -s sha512 -r 100
Enter new password: ...
Retype new password: ...
{SHA512}.............................................................==
# psql -U mailreader -d mail
mail=# INSERT INTO users (
email,
password,
maildir
) VALUES (
'[email protected]',
'{SHA512}.............................................................==',
'foo/'
);
管理インターフェース(オプション)
コマンドラインインターフェイスを使用してメールデータベースを管理したくない場合は、管理インターフェイスを設定できます。 まず、メールデータベースの編集のみが許可されているデータベースユーザーを追加しましょう。 帰ります /etc/postgresql/9.1/main/pg_hba.conf
前に追加したピア認証行のすぐ下にこの行を追加します。
host pgadmin mail 127.0.0.1/32 md5
これにより、ポート5432でのローカルソケット接続が可能になります。 (postgresのデフォルトポート)
データベースユーザーを追加します。
# sudo -u postgres psql
postgres=# CREATE USER pgadmin WITH PASSWORD 'new password';
postgres=# \q
メールデータベースを編集する権限をユーザーに付与します。
# sudo psql -U mailreader -d mail
mail=> GRANT SELECT, UPDATE, INSERT, DELETE ON users TO pgadmin;
mail=> GRANT SELECT, UPDATE, INSERT, DELETE ON aliases TO pgadmin;
mail=> \q
SSHトンネリングを使用してデータベースに直接接続できるpgAdminのような管理インターフェースを使用できるようになりました。または、phpPgAdminのようなものを設定することもできます。
Dovecotのセットアップ
dovecotをデータベースに接続し、LMTPサーバーをセットアップする必要があります。 新しいユーザー(dovecotはシステムユーザーが設定されていないメールの処理を拒否します)とmaildirのディレクトリを最初に設定します:( / var / mail を使用できますが、従来はmbox形式を使用します。優れたmaildir形式を使用します)。
# adduser --system --no-create-home --uid 500 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
# mkdir /home/mailboxes
# chown vmail:vmail /home/mailboxes
# chmod 700 /home/mailboxes
次の構成を次のように保存します /etc/dovecot/dovecot-sql.conf
:
driver = pgsql
connect = host=/var/run/postgresql/ dbname=mail user=mailreader
default_pass_scheme = SHA512
password_query = SELECT email as user, password FROM users WHERE email = '%u'
user_query = SELECT email as user, 'maildir:/home/mailboxes/maildir/'||maildir as mail, '/home/mailboxes/home/'||maildir as home, 500 as uid, 500 as gid FROM users WHERE email = '%u'
rootが所有し、chmodded600であることを確認してください。
開催中 /etc/dovecot/dovecot.conf
を編集します passdb
と userdb
このように見える設定:
userdb {
driver = prefetch
}
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
プロトコルスタンザを次のように変更します
protocols = imap lmtp
lmtpサービスソケットといくつかのlmtpプロトコル設定を追加します。
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
protocol lmtp {
postmaster_address=postmaster@yourdomain.com
hostname=mail.yourdomain.com
}
mail_location スタンザは不要になり、削除できるようになりました。
Postfix
ここで、postfixにメールをdovecotに直接配信するように指示する必要があります。 開ける /etc/postfix/main.cf
と追加
mailbox_transport = lmtp:unix:private/dovecot-lmtp
最後まで。 次に、postfixのデータベース構成を設定する必要があります。
ファイルを作成する /etc/postfix/pgsql-aliases.cf
次のように入力します。
user=mailreader
dbname=mail
table=aliases
select_field=alias
where_field=email
hosts=unix:/var/run/postgresql
次に、ファイルを作成します /etc/postfix/pgsql-boxes.cf
次のように入力します。
user=mailreader
dbname=mail
table=users
select_field=email
where_field=email
hosts=unix:/var/run/postgresql/
次に、main.cfのalias_maps行を修正して次のようにします。
alias_maps = hash:/etc/aliases proxy:pgsql:/etc/postfix/pgsql-aliases.cf
およびlocal_recipient_maps行を読み取る
local_recipient_maps = proxy:pgsql:/etc/postfix/pgsql-boxes.cf $alias_maps
全体として、main.cfは次のようになります。
myhostname = mail.mydomain.com
myorigin = mydomain.com
mydestination = mydomain.com, mail.mydomain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
alias_maps = hash:/etc/aliases proxy:pgsql:/etc/postfix/pgsql-aliases.cf
local_recipient_maps = proxy:pgsql:/etc/postfix/pgsql-boxes.cf $alias_maps
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3
仕上げ
今すぐリロードします:
# postfix reload
# service dovecot restart
そして、あなたは準備ができています! 最初の記事の後で行ったようにセットアップをテストし、次のアドレスにメールを送信してください。 [email protected]
出席したメールボックスへの道を見つけます!
提出者: LukasErlacher。