postfix smtp サーバーのエイリアスの使用状況をカウントしたいと考えています。virtual_alias_maps
エイリアスは、後置ディレクティブ ' 'を使用して MySQL 経由で照会されmain.cf
ます。
user = user
password = pwd
hosts = 127.0.0.1
dbname = dbname
query = SELECT destination FROM view_aliases WHERE email='%s'
ルックアップはスムーズに機能し、不満はありません。今必要なのは、postfix がエイリアスを検索するたびにカウンター (MySQL テーブルの列) を増やすことです。次のようにクエリをチェーンしようとしました:
query = UPDATE view_aliases SET hitcount = hitcount+1 WHERE email='%s'; SELECT destination FROM view_aliases WHERE email='%s'
しかし、それはエラーメッセージとpostfixのルックアップの問題につながります:
Mar 7 11:04:01 host postfix/trivial-rewrite[32546]: warning: mysql query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT destination FROM view_aliases WHERE email='mydomain.com'' at line 1
後置エイリアスを使用するためのヒットカウンターを必要に応じて作成する方法はありますか?
更新: ethrbunny のヒントに従って、次の手順を記述しようとしました (今回はテスト データベースで)。
DELIMITER &
CREATE PROCEDURE mailbox(IN recipient VARCHAR(255))
BEGIN
SELECT * FROM test WHERE email=recipient;
UPDATE test SET value=value+1 WHERE email=recipient;
END &
DELIMITER ;
でプロシージャを呼び出すとCALL mailbox('test@test.com')
、サーバーからスレッド スタック オーバーラン エラー メッセージが表示されます...