いつも参考にさせていただいております。
CentOSでpostfix+mysql+dovecotでバーチャルメール環境を構築しました。
postfixadminにはvacationの機能があるので、install.txt通り設定したところ、ユーザーアンノウンでエラーメールとなって返ってきます。
メールそのものは届いております。
バケーションの設定をpostfixadminから解除すると、エラーメールはなくなります。
どうも、正しくvacation.plまで処理が渡っていないようなのと、mysqlへの認証がないのでpostfixが怒っているような感じがするのですが、どのように変更すればいいのか、見当が付きません。
おやじさま、もしお分かりでしたら、設定変更の部分をご教授願えないでしょうか?
おやじは使ったことないので、参考程度の意見しかいえませんが・・。
> CentOSでpostfix+mysql+dovecotでバーチャルメール環境を構築しました。
> postfixadminにはvacationの機能があるので、install.txt通り設定したところ、ユーザーアンノウンでエラーメールとなって返ってきます。
>
> メールそのものは届いております。
メールがどこに届いているのかわかりませんが、そもそもuser unknownとはだれがunknownなのでしょうか?
vacationユーザがチャントできていないのでは?
> バケーションの設定をpostfixadminから解除すると、エラーメールはなくなります。
>
> どうも、正しくvacation.plまで処理が渡っていないようなのと、mysqlへの認証がないのでpostfixが怒っているような感じがするのですが、どのように変更すればいいのか、見当が付きません。
vacation.plまで処理がいっているからバケーションの設定をするとエラーが出ているので、上位の推論はあっていないと思います。
http://www.kobitosan.net/postfix/trans-2.1/jhtml/FILTER_README.html
また、vacationは上記の仕組みで送っているのでmysqlへの認証もいりません。
従って、vacationユーザ周りがおかしいのではないかと思います。
おやじ様。返信ありがとうございます。
>また、vacationは上記の仕組みで送っているのでmysqlへの認証もいりません。
そうなんですね。了解しました。少し疑問が解けました。
>メールがどこに届いているのかわかりませんが、そもそもuser unknownとはだれがunknownなのでしょうか?
このようなエラーで返ってきます。
<"test@example.com"@example.com> (expanded from <test@example.com>): unknown
user: "test@example.com@example.com"
@の後ろは、config.inc.phpで指定したドメイン名(この場合は同じ名前)なんです。
もう少しvacatonユーザーまわりを追いかけてみます…
うまく動かないのは、postfixadmin のアーカイブに同梱されているvacation.plのバグと INSTALL.TXTも誤りが原因です。 下記で対応できますが、vacationは日本語対応できていないので、subjectと本文に日本語 は使えません。 日本語対応には改造が必要ですが、おやじの環境ではphpとmysql間で文字化けが発生してまともに 扱えないため、検証ができません。 本件は、時間をかけないとおやじの実力では解決できません。 なお、バケーション(自動返信)に関しては、いろいろな課題があると思いますので実際に使用するか どうかはよく考えてください。 送信者を偽装したspamを受けたらどうなるか・・・等です。 1. 下記のSVNリポリトジからvacation.plの最新のv.3.2を入手する。 http://postfixadmin.svn.sourceforge.net/viewvc/postfixadmin/trunk/VIRTUAL_VACATION/vacation.pl?view=log 2. これもバグがあるので、下記を修正する。上部にある変数の前に「my」を追加。 my $db_type = 'mysql'; my $db_host = 'localhost'; my $db_user = 'postfixadmin'; my $db_pass = 'postfixadmin'; my $db_name = 'postfix'; my $sendmail = "/usr/sbin/sendmail"; my $logfile = ""; # specify a file name here for example: vacation.log my $debugfile = ""; # specify a file name here for example: vacation.debug my $syslog = 0; # 1 if log entries should be sent to syslog my $logger = "/usr/bin/logger"; 3. INSTALL.TXTに誤りがあるので、下記のようにする。 3.1 /etc/postfix/master.cfに追加するのは下記のようにする。 vacation unix - n n - - pipe flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient} 3.2 /etc/postfix/transportには下記のように記述する。最後の「:」が必要。 autoreply.yourdomain.com vacation: 「autoreply.yourdomain.com」の「yourdomain.com」は自分のドメイン名。但し、DNSの設定等は不要。 また、「autoreply.yourdomain.com」はpostfixadminのconfig.inc.phpの $CONF['vacation_domain'] とあわせておくこと。
おやじ様
わざわざ詳細をありがとうございます。
私も、googleなどで海外のドキュメントを追ってみたところ、おやじ様の調べていただいた結果に比較的近い所までたどり着きました。
完全な対応が難しく、日本語を通すのが難しいのであれば、運用としては難しいですね。
フォローいただいた内容を検討した結果、postfixadminでのバーチャル運用ではなく、実ユーザーを作り、Vacation 1.2.6.3をインストールして対応することにいたしました(これであれば一定期間内に来たメールは返信しませんし)。
貴重な時間を割いていただき、本当にありがとうございました。
> わざわざ詳細をありがとうございます。
> 私も、googleなどで海外のドキュメントを追ってみたところ、おやじ様の調べていただいた結果に比較的近い所までたどり着きました。
> 完全な対応が難しく、日本語を通すのが難しいのであれば、運用としては難しいですね。
結論から言えば、今回の件はPHP+MySQLの文字化け問題に対処(my.cnfの設定変更)してから、一旦、DBを削除して再度作成しなおすことでMySQL上の文字化け(latin1として登録されてしまい?????となってしまう問題)が解消しました。いくら、DBのcharsetを変更しても駄目でしたが、my.cnfで対策後に再度DBを作成しなおすことでうまくいきました。
結果、日本語対応の改造も問題ない(こちらは一発でOK)ことが確認でき、日本語の不在メッセージも扱えました。
> フォローいただいた内容を検討した結果、postfixadminでのバーチャル運用ではなく、実ユーザーを作り、Vacation 1.2.6.3をインストールして対応することにいたしました(これであれば一定期間内に来たメールは返信しませんし)。
これは、vacation.plでも同じことです。cacheがありますので、不在メッセージを登録すると同一送信者には同じメッセージは返送しません。メッセージを再登録すると、cacheがクリアされるので再度送ります。
おやじが言いたかったのは、spamの送信者は通常偽装されているので、例え1通でも何も関係ない相手にメールがいくということです。おやじのアドレスを偽装したspamメールに返送されてえらい迷惑を被ったことがありますが、このように何通もくることはありませんが、手当たり次第に投げられたらそこらじゅうに受け取ったほうからすれば意味不明の
メールが大量にばら撒かれるということです。また、送信者がいい加減なメアドだと自分に跳ね返ってきて、さらにそれに返信してしまうというメールループのような状態が想定されるということで、これは一例ですが自動返信は運用に注意が必要と思います。
わざわざ検証いただきありがとうございました。
運用に関しては仰るとおりですね。十分留意したいと思います。
PostfixAdminでバーチャル バケーションの対応をまとめてみました。
日本語対応と、ユーザ毎の指定アドレスの自動応答除外機能を付加しましたので、いくらか使いやすくなったと思います。
なお、スパム対策をしっかりして排除すれば自動返信は回避できるので、スパム対策は必須ですね。