トーク:仮想ユーザーメールシステム

提供: ArchWiki
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

「仮想ユーザーメールシステム」の事例が正しく動作しません。

先日より「仮想ユーザーメールシステム」を参照させて戴いております。

CentOS7(x64)にてpostfix&dovecotの状況にてローカルサーバにおいてはインターネットとの送受信が正常に出来ており、 httpd(apache2)やdns(named-chroot)でヴァーチャルドメインの設定も完了しており、Webに関してはヴァーチャルドメインでのURLアクセスでも、正しくヴァーチャルドメイン側のコンテンツにたどり着ける状況です。

その環境下にて、postfixadminの導入に苦戦しております。 少なくとも、2021/01/18時点の現行版を参照しながら必要な部分をアレンジして自サーバに導入すると、ローカルアカウントもヴァーチャルアカウントも全て送受信共にエラーとなってしまいます。 既に数日格闘しているので、即時復旧用に/etc/dovecot/と/etc/postfix/の2つのディレクトリに関しては、/etc/original_backup/配下に完全コピーを逃がしてあり、設定変更後にNGな状況になってもスグに元の環境に戻せるようにして実験しています。

まず、想定されているvmail/配下の構造ですが、こちらでは/home/vmail/配下を配信用ワークディレクトリとして設定しています。 しかし、こちらの事例こ基づいて実行すると、仮想ドメイン「hoge.jp」「foo.com」に関して、postfixadminの「ようこそメール」を受信しようとすると下記のようなディレクトリ実構造が出来上がり、sqlでの問い合わせと違うとエラーとなってしまいます。尚、デバッグの為、各モジュール間の認証はPLAINにしているつもりです。

<変更後の実際の構造> /home/vmail/maindomain.com/main_account1_no_domainname/{cur,new,tmp} /home/vmail/hoge.jp/user_account1_no_domainname/{cur,new,tmp} /home/vmail/foo.com/user_account2_no_domainname/{cur,new,tmp}

postfixadmin側の設定は合っているようで、設定切り替え後、#systemctl restart postfix(dovecot)を行うと、 ローカルからのsmtp-auth送信は出来ますが、受信側に関しては/home/main_account1_no_domainname/MailDir/配下な配信されていたメールが、 <変更後の実際の構造>である /home/vmail/maindomain.com/main_account1_no_domainname/new/ 配下に新着メールが溜まり続ける状況になります。 この動作挙動自体は問題無いと思うのですが、実際にメーラ(Seamonkey≒Thunderbird)で受信しようとすると、エラーとなりメールログが下記のようになります。

****************************** Jan 17 15:43:48 maindomain dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_mysql.so Jan 17 15:43:48 maindomain dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so Jan 17 15:43:48 maindomain dovecot: auth: Debug: Read auth token secret from /var/run/dovecot/auth-token-secret.dat Jan 17 15:43:48 maindomain dovecot: auth: Debug: auth client connected (pid=16268) Jan 17 15:43:48 maindomain dovecot: auth: Debug: client in: AUTH#0111#011PLAIN#011service=pop3#011session=iWiC7RK5ODbAqAAz#011lip=192.168.0.5#011rip=192.168.0.51#011lport=110#011rport=13880 Jan 17 15:43:48 maindomain dovecot: auth: Debug: client passdb out: CONT#0111 Jan 17 15:43:48 maindomain dovecot: auth: Debug: client in: CONT<hidden> Jan 17 15:43:48 maindomain dovecot: auth-worker(16270): Debug: Loading modules from directory: /usr/lib64/dovecot/auth Jan 17 15:43:48 maindomain dovecot: auth-worker(16270): Debug: Module loaded: /usr/lib64/dovecot/auth/lib20_auth_var_expand_crypt.so Jan 17 15:43:48 maindomain dovecot: auth-worker(16270): Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_mysql.so Jan 17 15:43:48 maindomain dovecot: auth-worker(16270): Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so Jan 17 15:43:48 maindomain dovecot: auth-worker(16270): Debug: sql(main_account1_no_domainname,192.168.0.51,<iWiC7RK5ODbAqAAz>): query: SELECT username as user, password, '/home/vmail//main_account1_no_domainname' as userdb_home, 'maildir:/home/vmail//main_account1_no_domainname' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM mailbox WHERE username = 'main_account1_no_domainname' AND active = '1' Jan 17 15:43:48 maindomain dovecot: auth-worker(16270): sql(main_account1_no_domainname,192.168.0.51,<iWiC7RK5ODbAqAAz>): unknown user Jan 17 15:43:50 maindomain dovecot: auth: Debug: client passdb out: FAIL#0111#011user=main_account1_no_domainname Jan 17 15:43:52 maindomain dovecot: pop3-login: Disconnected (auth failed, 1 attempts in 4 secs): user=<main_account1_no_domainname>, method=PLAIN, rip=192.168.0.51, lip=192.168.0.5, session=<iWiC7RK5ODbAqAAz> ******************************


特に気になる点が「'maildir:/home/vmail//main_account1_no_domainname'」の部分で「vmail」の後に「//」と二重スラッシュが登場している点、 及び、本来は「/home/vmail/maindomain.com/main_account1_no_domainname/」と「/maindomain.com/」の配下に「main_account1_no_domainname」が有るにもかかわらず、 ログでは「/home/vmail//」とドメインネームが記載されていない点です。

sql文の部分を、実験的に「%d:%n:%u:/123」といった形にして試してみたところ、%nと%uの値が同じ、かつ%dにはドメイン名が含まれていないため、<変更後の実際の構造>に合致したディレクトリ名へのクエリが生成されていないように見受けられます。

***** Jan 18 15:23:00 maindomain dovecot: auth-worker(16429): Debug: sql(main_account1_no_domainname,192.168.0.51,<b/zywCa57YrAqAAz>): query: SELECT username as user, password, '/home/vmail//main_account1_no_domainname:main_account1_no_domainname:/123' as userdb_home, 'maildir:/home/vmail//main_account1_no_domainname:main_account1_no_domainname:/123' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM mailbox WHERE username = 'main_account1_no_domainname' AND active = '1' Jan 18 15:23:00 maindomain dovecot: auth-worker(16429): sql(main_account1_no_domainname,192.168.0.51,<b/zywCa57YrAqAAz>): unknown user *****

私的に力量と知見が乏しく、どこに誤りがあってこのような事態に陥っているのかが解りません。 どなたか切り分けが出来る方に、ご教示願えればとお願いする次第です。

このような手法での問い合わせで良いのか、初めてのため、手法が誤っていたらご容赦下さい。

こちらは問題解決のための場所というより、既に確立されている解決方法などの知識をまとめている場所という側面が大きいかと思っています。
問題解決をご希望であれば、フォーラムの方に投稿いただけるとより適切かと思います。https://bbs.archlinux.jp/
しかし、上記のフォーラムはアクティブなメンバーがかなり少ないため、より一般的な質問サイト(teratail, StackOverflow, ...)などを利用された方がよいかもしれません。
最後に、投稿されたログ内に HTML タグとして解釈される文字列があったため、文字参照に変更させていただきました。 -- Ny-a (トーク) 2021年1月19日 (火) 00:47 (JST)

;-- ;Ny-a様、早速のご回答ありがとうございました。 ;また、フォーラム・一般的な質問サイトのご教示、とてもありがたく活用させて頂きたく存じます。 ;自分のスキルレベルが低いのは承知の上で、公開されているコンテンツの読み替え活用だけでは、 ;何ともならない状況に陥っていたため、この場をお借りいたしました。 ;尚、この場所での投稿が不適切で有った模様、改めてお詫び申し上げます。 ;今後はご教示戴いた場所にて質疑投稿等させて戴きますので、よろしければ本議論は抹消戴ければ幸いです ; ;以上、既読のご連絡と謝意・お詫びまで。 ; ;1/20(水)PM16:50(JST) Halcom拝。