+--- postfix-2.3-RC9/src/smtpd/smtpd.h.orig 2006-07-09 21:49:21.000000000 +0200
++++ postfix-2.3-RC9/src/smtpd/smtpd.h 2006-07-11 20:30:43.993322048 +0200
+@@ -77,6 +77,7 @@
+ char *addr; /* client host address string */
+ char *namaddr; /* combined name and address */
+ char *rfc_addr; /* address for RFC 2821 */
++ char *ident_user; /* user name returned by ident RFC 1413 */
+ int addr_family; /* address family */
+ struct sockaddr_storage sockaddr; /* binary client endpoint */
+ int name_status; /* 2=ok 4=soft 5=hard 6=forged */
+@@ -266,6 +267,8 @@
+ extern void smtpd_peer_init(SMTPD_STATE *state);
+ extern void smtpd_peer_reset(SMTPD_STATE *state);
+
++extern char *smtpd_ident(struct sockaddr_in *peer_addr, struct sockaddr_in *smtpd_addr);
++
+ #define SMTPD_PEER_CODE_OK 2
+ #define SMTPD_PEER_CODE_TEMP 4
+ #define SMTPD_PEER_CODE_PERM 5
+--- postfix-2.8.3/src/smtpd/Makefile.in~ 2011-05-17 14:28:28.406666872 +0200
++++ postfix-2.8.3/src/smtpd/Makefile.in 2011-05-17 14:31:06.946666872 +0200
+@@ -2,11 +2,11 @@
+ SRCS = smtpd.c smtpd_token.c smtpd_check.c smtpd_chat.c smtpd_state.c \
+ smtpd_peer.c smtpd_sasl_proto.c smtpd_sasl_glue.c smtpd_proxy.c \
+ smtpd_xforward.c smtpd_dsn_fix.c smtpd_milter.c smtpd_resolve.c \
+- smtpd_expand.c smtpd_haproxy.c
++ smtpd_expand.c smtpd_haproxy.c smtpd_ident.c
+ OBJS = smtpd.o smtpd_token.o smtpd_check.o smtpd_chat.o smtpd_state.o \
+ smtpd_peer.o smtpd_sasl_proto.o smtpd_sasl_glue.o smtpd_proxy.o \
+ smtpd_xforward.o smtpd_dsn_fix.o smtpd_milter.o smtpd_resolve.o \
+- smtpd_expand.o smtpd_haproxy.o
++ smtpd_expand.o smtpd_haproxy.o smtpd_ident.o
+ HDRS = smtpd_token.h smtpd_check.h smtpd_chat.h smtpd_sasl_proto.h \
+ smtpd_sasl_glue.h smtpd_proxy.h smtpd_dsn_fix.h smtpd_milter.h \
+ smtpd_resolve.h smtpd_expand.h
+--- postfix-2.9.0/src/smtpd/smtpd.c.orig 2012-02-04 19:34:17.737149536 +0100
++++ postfix-2.9.0/src/smtpd/smtpd.c 2012-02-04 19:36:43.414073592 +0100
+@@ -1208,6 +1208,7 @@
+ char *var_local_rwr_clients;
+ char *var_smtpd_ehlo_dis_words;
+ char *var_smtpd_ehlo_dis_maps;
++char *var_smtpd_ident_lookup;
+
+ char *var_smtpd_tls_level;
+ bool var_smtpd_use_tls;
+@@ -1329,6 +1330,11 @@
+ int smtpd_input_transp_mask;
+
+ /*
++ * Hosts that should be ident-queried
++ */
++NAMADR_LIST *smtpd_ident_lookup;
++
++ /*
+ * Forward declarations.
+ */
+ static void helo_reset(SMTPD_STATE *);
+@@ -2950,10 +2956,18 @@
+ * intermediate proxy.
+ */
+ if (!proxy || state->xforward.flags == 0) {
+- out_fprintf(out_stream, REC_TYPE_NORM,
+- "Received: from %s (%s [%s])",
+- state->helo_name ? state->helo_name : state->name,
+- state->name, state->rfc_addr);
++ if (namadr_list_match(smtpd_ident_lookup, state->name, state->addr)) {
++ out_fprintf(out_stream, REC_TYPE_NORM,
++ "Received: from %s (%s [%s] ident=%s)",
++ state->helo_name ? state->helo_name : state->name,
++ state->name, state->rfc_addr,
++ state->ident_user);
++ } else {
++ out_fprintf(out_stream, REC_TYPE_NORM,
++ "Received: from %s (%s [%s])",
++ state->helo_name ? state->helo_name : state->name,
++ state->name, state->rfc_addr);
++ }
+
+ #define VSTRING_STRDUP(s) vstring_strcpy(vstring_alloc(strlen(s) + 1), (s))
+
+@@ -4954,6 +4968,9 @@
+ xclient_hosts = namadr_list_init(MATCH_FLAG_RETURN, var_xclient_hosts);
+ xforward_hosts = namadr_list_init(MATCH_FLAG_RETURN, var_xforward_hosts);
+ hogger_list = namadr_list_init(MATCH_FLAG_RETURN, var_smtpd_hoggers);
++ smtpd_ident_lookup =
++ namadr_list_init(match_parent_style(VAR_SMTPD_IDENT_LOOKUP),
++ var_smtpd_ident_lookup);
+
+ /*
+ * Open maps before dropping privileges so we can read passwords etc.
+@@ -5382,6 +5399,7 @@
+ VAR_MILT_V, DEF_MILT_V, &var_milt_v, 1, 0,
+ VAR_STRESS, DEF_STRESS, &var_stress, 0, 0,
+ VAR_REJECT_REPLY_MSG_ACCESS_DENIED, DEF_REJECT_REPLY_MSG_ACCESS_DENIED, &var_reject_reply_msg_access_denied, 1, 0,
++ VAR_SMTPD_IDENT_LOOKUP, DEF_SMTPD_IDENT_LOOKUP, &var_smtpd_ident_lookup, 0, 0,
+ VAR_UNV_FROM_WHY, DEF_UNV_FROM_WHY, &var_unv_from_why, 0, 0,
+ VAR_UNV_RCPT_WHY, DEF_UNV_RCPT_WHY, &var_unv_rcpt_why, 0, 0,
+ VAR_REJECT_TMPF_ACT, DEF_REJECT_TMPF_ACT, &var_reject_tmpf_act, 1, 0,
+--- postfix-2.9.0/src/smtpd/smtpd_peer.c.orig 2012-02-04 19:34:17.294233547 +0100
++++ postfix-2.9.0/src/smtpd/smtpd_peer.c 2012-02-04 19:40:48.203777370 +0100
+@@ -103,6 +103,7 @@