1

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')、サーバーからスレッド スタック オーバーラン エラー メッセージが表示されます...

4

0 に答える 0