iidaの日記: PostfixのMAIL FROM: AUTHパラメータ
AUTH LOGINに対応したメール・サーバーにつなぐため、Cyrus-SASLを付けたPostfixを設定してみたが、うまくいかない。ngrepで見ると、MAIL FROMでコケている。よく見ると「AUTH=<>」というパラメータがついているではないか。ソースを調べると、SASLで認証するときは、必ずこの空値のパラメータを渡すようだ。
AUTH=<>を付けてTELNETで会話すると、やっぱりうまくいかない。ためしにAUTH=<check@examle.jp>といんちきな値を与えてやったら、うまく行ってしまった。なんだかなあ。
そこでこんなパッチを作って、postfix-usersリストに流してやった。
diff -ru1 postfix-2.8.7~/src/global/mail_params.h postfix-2.8.7/src/global/mail_params.h
--- postfix-2.8.7~/src/global/mail_params.h 2011-03-14 17:59:09.000000000 +0000
+++ postfix-2.8.7/src/global/mail_params.h 2011-12-15 07:21:34.747158000 +0000
@@ -1557,2 +1557,8 @@
+#define VAR_SMTP_SASL_FROM_AUTH_PARAM "smtp_sasl_from_auth_param"
+#define VAR_LMTP_SASL_FROM_AUTH_PARAM "lmtp_sasl_from_auth_param"
+#define DEF_SMTP_SASL_FROM_AUTH_PARAM ""
+#define DEF_LMTP_SASL_FROM_AUTH_PARAM ""
+extern char *var_smtp_sasl_from_auth_param;
+
#define VAR_SMTP_SASL_PASSWD "smtp_sasl_password_maps"
diff -ru1 postfix-2.8.7~/src/smtp/lmtp_params.c postfix-2.8.7/src/smtp/lmtp_params.c
diff -ru1 postfix-2.8.7~/src/smtp/smtp.c postfix-2.8.7/src/smtp/smtp.c
--- postfix-2.8.7~/src/smtp/smtp.c 2010-12-31 01:19:44.000000000 +0000
+++ postfix-2.8.7/src/smtp/smtp.c 2011-12-15 07:41:24.274292000 +0000
@@ -739,2 +739,3 @@
char *var_smtp_sasl_path;
+char *var_smtp_sasl_from_auth_param;
char *var_smtp_sasl_passwd;
diff -ru1 postfix-2.8.7~/src/smtp/smtp_params.c postfix-2.8.7/src/smtp/smtp_params.c
--- postfix-2.8.7~/src/smtp/smtp_params.c 2010-08-28 00:03:15.000000000 +0000
+++ postfix-2.8.7/src/smtp/smtp_params.c 2011-12-15 07:15:59.483839000 +0000
@@ -5,2 +5,3 @@
VAR_ERROR_RCPT, DEF_ERROR_RCPT, &var_error_rcpt, 1, 0,
+ VAR_SMTP_SASL_FROM_AUTH_PARAM, DEF_SMTP_SASL_FROM_AUTH_PARAM, &var_smtp_sasl_from_auth_param, 0, 0,
VAR_SMTP_SASL_PASSWD, DEF_SMTP_SASL_PASSWD, &var_smtp_sasl_passwd, 0, 0,
diff -ru1 postfix-2.8.7~/src/smtp/smtp_proto.c postfix-2.8.7/src/smtp/smtp_proto.c
--- postfix-2.8.7~/src/smtp/smtp_proto.c 2011-01-08 00:12:06.000000000 +0000
+++ postfix-2.8.7/src/smtp/smtp_proto.c 2011-12-15 08:19:41.292921000 +0000
@@ -1357,3 +1357,9 @@
&& (session->features & SMTP_FEATURE_AUTH))
- vstring_strcat(next_command, " AUTH=<>");
+ {
+ vstring_strcat(next_command, " AUTH=<");
+ vstring_strcat(next_command,
+ (var_smtp_sasl_from_auth_param?
+ var_smtp_sasl_from_auth_param: ""));
+ vstring_strcat(next_command, ">");
+ }
#endif
PostfixのMAIL FROM: AUTHパラメータ More ログイン