I was testing relayd a while back against a couple of IIS 7.5 servers
serving Exchange 2010. It looks like IIS 7.5 (included with Windows 2008
R2) really wants HTTP 1.1 requests to include the User-Agent header in the
request; leaving it out generates a "400 Bad Request" response.
The HTTP 1.1 spec[1] says of the User-Agent header, "User agents SHOULD
include this field with requests." Not a MUST, so maybe Microsoft is doing
it wrong by seemingly requiring it. But since it's a SHOULD, perhaps relayd
should be sending it anyway for HTTP 1.1 requests? Either way, it's a quick
fix and makes my relay check statements work:
Index: parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/relayd/parse.y,v
retrieving revision 1.159
diff -u -p -r1.159 parse.y
--- parse.y 21 Sep 2011 18:45:40 -0000 1.159
+++ parse.y 10 Nov 2011 16:53:20 -0000
@@ -228,7 +228,7 @@ hostname : /* empty */ {
fatal("calloc");
}
| HOST STRING {
- if (asprintf(&$$, "Host: %s\r\nConnection: close\r\n",
+ if (asprintf(&$$, "Host: %s\r\nUser-Agent:
relayd\r\nConnection: close\r\n",
$2) == -1)
fatal("asprintf");
}
Is this useful?
[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43
--
Seth