diff -upr ./wp-content/plugins/akismet/akismet.php ../changed/wp-content/plugins/akismet/akismet.php
--- ./wp-content/plugins/akismet/akismet.php	2007-08-20 18:23:16.000000000 -0400
+++ ../changed/wp-content/plugins/akismet/akismet.php	2007-08-20 18:24:56.000000000 -0400
@@ -184,7 +184,11 @@ function akismet_http_post($request, $ho
 function akismet_auto_check_comment( $comment ) {
 	global $akismet_api_host, $akismet_api_port;
 
-	$comment['user_ip']    = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
+        if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
+                $comment['user_ip']    = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
+        } else {
+		$comment['user_ip']    = preg_replace( '/[^0-9., ]/', '', $_SERVER['HTTP_X_FORWARDED_FOR'] );
+        }
 	$comment['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
 	$comment['referrer']   = $_SERVER['HTTP_REFERER'];
 	$comment['blog']       = get_option('home');
diff -upr ./wp-includes/comment.php ../changed/wp-includes/comment.php
--- ./wp-includes/comment.php	2007-08-20 18:23:16.000000000 -0400
+++ ../changed/wp-includes/comment.php	2007-08-20 18:25:23.000000000 -0400
@@ -328,7 +328,13 @@ function wp_insert_comment($commentdata)
 	extract($commentdata, EXTR_SKIP);
 
 	if ( ! isset($comment_author_IP) )
-		$comment_author_IP = preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] );
+	{
+	        if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
+			$comment_author_IP = preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] );
+	        } else {
+			$comment_author_IP = preg_replace( '/[^0-9., ]/', '',$_SERVER['HTTP_X_FORWARDED_FOR'] );
+	        }
+	}
 	if ( ! isset($comment_date) )
 		$comment_date = current_time('mysql');
 	if ( ! isset($comment_date_gmt) )
@@ -383,7 +389,11 @@ function wp_new_comment( $commentdata ) 
 	$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
 	$commentdata['user_ID']         = (int) $commentdata['user_ID'];
 
-	$commentdata['comment_author_IP'] = preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] );
+        if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
+		$commentdata['comment_author_IP'] = preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] );
+	} else {
+		$commentdata['comment_author_IP'] = preg_replace( '/[^0-9., ]/', '',$_SERVER['HTTP_X_FORWARDED_FOR'] );
+	}
 	$commentdata['comment_agent']     = $_SERVER['HTTP_USER_AGENT'];
 
 	$commentdata['comment_date']     = current_time('mysql');

