初めて投稿させて戴くHal.と申します。
を参照し、CentOS7.9(x64)にて、postfix/docecot/mysql(MariaDB)の環境にpostfixadminを導入しようと2w程度四苦八苦しててるのですが出口が見えません。
現在、postfix,dovecotのみの環境において、ローカルユーザのe-mailの送受信等は問題無く実行出来ております。
また、postfixadmin(最新v3.3.3)単体での導入に関してもpostfixadminとmysql(MariaDB)間の動作挙動に関しては問題無く見受けられ、postfixadminでバーチャルドメイン環境に移行させようとすると、ローカルユーザ・バーチャルドメインユーザ共にメールの送受信が出来なくなるという状況が発生して困り果てております。
バーチャルドメインと言っても実際には国際ドメインを発行済みで、固定IP1の環境ですが、Web(httpd)に関してはこれらの発行済みドメインで別々のトップページが閲覧出来る状況にはなっています。
archlinux.jpの議論欄にて「テラテイル」と「スタックオーバーフロー」という場があることをご教示戴き、質問をさせて頂く次第です。どなたか知見のお有りになる方からのアドバイスをいただきたく、何卒ご教示の程よろしくお願いいたします。
以下、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
*****
私的に力量と知見が乏しく、どこに誤りがあってこのような事態に陥っているのかが解りません。
どなたか切り分けが出来る方に、ご教示願えればとお願いする次第です。
---
2021/01/28、追記。
そもそも論になってしまうかも知れませんが、SMTP-AUTHに関してport 25/587等、WinPCメールクライアント(Seamonkey)での確認以前に、ローカルコンソール上のtelnetでの確認が不十分であったと反省しております。
また、この点で切り分けていくと、postfixadminを導入する前段階として、sasl2に関する設定とpostfixのmail.cfの設定で最小限必要な要件も、正しく満たされていなかったらしく、telnetで接続確認をするとエラーとなる状況でした。
さらに、/etc/sasl2/smtpd.confの「pwcheck_method:」を、従来は「saslauthd」であった設定を「pwcheck_method: auxprop」に変更した場合(saslauthdのsmtpd.confを変更した場合)、これを確かめる際に必要なパッケージのリスタートは「saslauthd」のみで無く、「postfix」の2パッケージを共にリスタートさせることが必須だと学びましたた。
この前提において、postfixadminの前段階としてmysqlのデータベースパスワードでは無く、sasldb2をauth-dbとして利用して、telnet接続での確認をクリアする為に必要な部分として、現時点で自己理解している(正しいのかなぁ?)設定状況は下記の通りです。
/etc/postfix/mail.cf
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination broken_sasl_auth_clients = yes
/etc/sasl2/smtpd.conf
#pwcheck_method: saslauthd pwcheck_method: auxprop mech_list: plain login #auxprop_plugin: sql auxprop_plugin: sasldb allowanonymouslogin: no allowplaintext: true mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
この設定状況で、
#systemctl restart postfix
#systemctl status postfix
#systemctl restart saslauthd
#systemctl status saslauthd
にてリスタートと正常起動の確認、及びtelnetでの接続確認などを行い、WinPCクライアントからport25/587それぞれに対するSMTP-AUTH送信、及びpop受信が従来通りできるところまで確認いたしました。
この先にdovecot,postfixをmysql対応とし、postfixでのMTA受信がvmailアカウントへ転送され、postfixadminで作成したドメインやアカウント対して正しい挙動が得られるかを確認していきたいと思います。
ここ数日SMTP-AUTH回り及びpostfixadminに関してインターネットコンテンツを頼りに自己勉強をしておったのですが、その間において、
postfixadmin関連に不具合が残存している事も解り、片言の英語でレポートを挙げました。
https://github.com/postfixadmin/postfixadmin/issues/434
その結果からか、他の方々からの不具合レポートを含め、本日postfixadminが3.3.5へアップデートされておりました。
(example.com/postfixadmin/setup.php・・・初回実行時の「$CONF['encrypt'] 」の設定内容によって、初回セットアップ時のみ有効であるはずのセットアップパスワードハッシュ「$CONF['setup_password'] 」の内容が変化する事(妥当かどうか不明?)は変わってませんでした)
これに加えて、つい先日、WinPCでのメール送受信クライアントとしていたSeamonkeyも2.53.6へのバージョンアップがあり、
従来と確認環境も変更されたことから、本件は途中段階までの確認を進めることが出来た事で(質疑の書き方やログの添付方法などにも問題があったと認識・反省しております)、一旦Closeとし、この先の確認プロセスを含め、新たな質疑として解り易くまとめ直したいと存じます。
CHERRYさま、TaichiYanagiyaさま、68userさま各位からのコメント・ご教示誠にありがとうございました。
回答1件
あなたの回答
tips
プレビュー