web-dev-qa-db-ja.com

Postfix + Dovecot-vmailディレクトリでメールを受信しない

私はこれに数え切れないほどの時間を費やしてきましたが、IDが助けを求めて「インターネット」に来ると考えました。

Postfix + dovecot + mysqlの新しいインストールをインストールしました。

今、マップされたアカウント「[email protected]」からメールを受信できますが、何らかの理由ですべてのメッセージが/ var/mail/seanに挿入されます

予想される場所:/var/vmail/domain.com/sean

これを機能させるために使用されるコードの重要な部分をリストします。

接尾辞master.cf

dovecot   unix  -       n       n       -       -       pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d ${recipient}

後置main.cf

virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

Dovecot 10-mail.conf

mail_location = maildir:/var/vmail/%d/%n
mail_uid = vmail
mail_gid = mail
first_valid_uid = 150
last_valid_uid = 150

Dovecot 10-auth.conf

disable_plaintext_auth = yes
!include auth-sql.conf.ext

Dovecot auth-sql.conf.ext

passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}

Dovecot dovecot-sql.conf.ext

driver = mysql
connect = Host=localhost dbname=mail user=mail password=P@ssw0rd
default_pass_scheme = MD5-CRYPT

password_query = \
SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, \
'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid \
FROM mailbox WHERE username = '%u' AND active = '1'

user_query = \
SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/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'

そして、それは私がやろうとしていることの設定部分のためにほとんどそれをします。

私が間違っていることのアイデアはありますか? {明日までにハゲになるはずです:)}

1
Sean

2つのカテゴリのユーザーを混同していると思います。 SystemUsersとVirtualUSersがあります。

Systemuserを使用する場合は、次の行を追加するだけです。

 mailbox_command = /usr/local/libexec/dovecot/deliver
#または
 mailbox_command = /usr/libexec/dovecot/deliver
#または
 mailbox_command = /usr/lib/dovecot/deliver
#またはシステムのどこにインストールされていても。

Virtualusersを使用しようとしている場合は、postfixでもそれらを構成する必要があります。

このようなもの:obs:mysql confsを使用しようとしますが、それを正しくするかどうかはわかりません。

/etc/postfix/virtual-address-mysql.cf 

コンテンツ:

 user = mail 
 password = P @ ssw0rd 
 dbname = mail 
 hosts = localhost 
 query =メールボックスからユーザー名を選択します'1'およびユーザー名= '%s'; 

見てください、私はあなたのクエリについて何かを見逃しているかもしれません。

これで、postfixは仮想ユーザーを知ることができます

今すぐマッピングする必要があります。

 proxy_read_maps = $ local_recipient_maps $ mydestination $ virtual_alias_maps $ virtual_mailbox_maps $ virtual_mailbox_domains 
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/virtual-address-mysql.cf [.________

システムユーザーよりもデータベースを管理する方が仮想ユーザーになります。

仮想ドメインと仮想エイリアスもできます

同じロジックで、confは次のようになります。

 virtual_mailbox_domains = proxy:mysql:/etc/postfix/vdomains.cf 
 virtual_alias_maps = proxy:mysql:/etc/postfix/virtual-alias.cf 

そのことを推測します。さらにヘルプが必要な場合は、あなたが見つけることができると思います

Dovecot Wiki

1

私もこの問題を抱えていたので、少し時間をかけて掘り下げました。誰かがそれを持っているなら、チェックする価値があります/var/log/mail.log次のようなエラーの場合:

postfix/trivial-rewrite[2149]: warning: do not list domain localdomain.co.uk in BOTH mydestination and virtual_mailbox_domains

削除したところlocaldomain.co.uk から mydestination = line 以内 /etc/postfix/main.cfファイル。これで問題が修正されたようです。

1
Tomek S

「virtual_mailbox_map.cnf」ファイルの問題(名前が異なる場合があります)

hosts = 127.0.0.1
user = postfix
password = password
dbname = postfix
query = SELECT CONCAT(domain, '/', maildir) FROM mailbox WHERE username='%s' AND active = 1

私が見たすべてのマニュアルで彼らがこのようなものを使用しているため、クエリの修正

query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
0
emposha

同じ問題があった。 1週間の夜の後、/ home/username/mail/.imap/INBOXの下にINBOXフォルダーを作成する必要がある場合があります。

それは私のためのトリックをしました。

システムはroundcube/dovecot/postfix/mysql/centos 6.4です。

ポール。

0
paul