%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E4%B8%8A%E3%81%AE%E4%BB%AE%E6%83%B3%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%3A%20pam_authenticate()%20%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E4%B8%8D%E6%98%8E%E3%81%AA%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%A7%E3%81%99.png)
注: この投稿の一部には、潜在的に機密性の高い情報が含まれているため、検閲しました。どこかにアスタリスクが無数に並んでいるのが見える場合は、それが理由です。
私は、Ubuntu 18.04 LTSを実行しているクラウドインスタンス上でPostfix、Dovecot、MariaDBを使用してメールサーバーを作成しようとしています。これを行うには、次の手順に従っています。このチュートリアル以前は、関連データベースに設定された仮想ユーザーにログインし、メールを送受信できるシステムを作成できました。
しかし、セキュリティ強化のために OpenDKIM を使用するように同じ Web サーバーを設定してからしばらく経つと、すべてが機能しなくなりました。アカウントにログインできなくなり、メールを受信できなくなりました。
ログインしようとすると、Thunderbird を使用しているか Roundcube を使用しているかに関係なく、資格情報が拒否されます。
最初は、次の SQL クエリを使用してデータベース内のハッシュを変更することで、アカウントのパスワードを変更しようとしました。
UPDATE `mailserver`.`virtual_users` SET password=ENCRYPT('newpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))) WHERE username='************';
phpMyAdmin を使用すると、この変更がデータベースに正常に書き込まれたことがはっきりとわかりましたが、同じユーザー名で新しいパスワードを試したところ、アクセスが拒否されました。次に、まったく新しい仮想ユーザーを作成してログインしようとしましたが、再び拒否されました。
何を試しても、サーバーは資格情報を有効なものとして受け入れないようです。
最初は、これはデータベースの問題かもしれないと考えましたが、ユーザー、メールボックス、エイリアスのルックアップ クエリ ファイルで postconf を実行すると、チュートリアルで説明されているように、すべてのテストで期待どおりの結果が返されます。SQL 資格情報に関するすべての記述は正しいようです。サーバーの再起動を試みましたが、apparmor によってブロックされたために MariaDB が再起動できないという問題が発生しましたが、apparmor をシステムから完全に削除し、データベースと他のすべてのメール関連サービスを再起動した後でも、ログインできません。
最終的に、ログを確認することになりました。そこには、 という関数の失敗が繰り返し記載されていましたpam_authenticate
。同様の問題を抱えている質問を見つけましたが、その質問にもメモリ不足について記載されていましたが、私のログにはその記載はありませんでした。
それらのログの例を挙げたいのですが、StackExchange ではそれらがスパムのように見えると考えているようです。申し訳ありません!
答え1
auth_username_format
ラバーダック。を設定すべきではなかったことが判明しました/etc/dovecot/conf.d/10-auth.conf
。 コメントアウトすることで、Dovecot はデータベース内のレコードを正常に読み取ることができました。