Index: trunk/src/sh_mail.c
===================================================================
--- trunk/src/sh_mail.c	(revision 215)
+++ trunk/src/sh_mail.c	(revision 216)
@@ -916,4 +916,24 @@
 }
 
+static int sh_mail_port = IPPORT_SMTP;
+
+int sh_mail_set_port (const char * str)
+{
+  int i = atoi (str);
+  
+  SL_ENTER(_("sh_mail_set_port"));
+  
+  if (i >= 0 && i < 65535)
+    { 
+      sh_mail_port = i;
+    }
+  else
+    {
+      sh_mail_port = IPPORT_SMTP;
+      SL_RETURN ((-1), _("sh_mail_set_port"));
+    }
+  
+  SL_RETURN( (0), _("sh_mail_set_port"));
+}
 
 /*************************
@@ -1017,5 +1037,5 @@
       TPT((0, FIL__, __LINE__, _("msg=<user %s machine %s>\n"), 
 	   ma_user, ma_machine)); 
-      fd = connect_port (ma_machine, IPPORT_SMTP, 
+      fd = connect_port (ma_machine, sh_mail_port, 
 			 error_call, &error_num, error_msg, 256);
     }
@@ -1040,5 +1060,5 @@
 		   _("msg=<user %s mx %s pref %d>\n"), 
 		   ma_user, ma_machine, result[i].pref));
-	      fd = connect_port (ma_machine, IPPORT_SMTP, 
+	      fd = connect_port (ma_machine, sh_mail_port, 
 				 error_call, &error_num, error_msg, 256);
 	      if (fd >= 0)
Index: trunk/src/sh_readconf.c
===================================================================
--- trunk/src/sh_readconf.c	(revision 215)
+++ trunk/src/sh_readconf.c	(revision 216)
@@ -1101,4 +1101,6 @@
   { N_("setmailrelay"),      SH_SECTION_MAIL,  SH_SECTION_MISC, 
     sh_mail_set_relay },
+  { N_("setmailport"),       SH_SECTION_MAIL,  SH_SECTION_MISC,
+    sh_mail_set_port },
   { N_("mailsingle"),        SH_SECTION_MAIL,  SH_SECTION_MISC, 
     sh_mail_setFlag },
