From: Kab <ka...@us...> - 2004-05-03 15:31:19
|
User: kabkhan Date: 04/05/03 08:30:42 Modified: src/test/org/jboss/mail/smtp/handlers HandlerBase.java TestCmdDATA.java Log: changed loop detection and made it configurable Revision Changes Path 1.11 +4 -0 jboss-mail/src/test/org/jboss/mail/smtp/handlers/HandlerBase.java Index: HandlerBase.java =================================================================== RCS file: /cvsroot/jboss/jboss-mail/src/test/org/jboss/mail/smtp/handlers/HandlerBase.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- HandlerBase.java 10 Apr 2004 10:16:06 -0000 1.10 +++ HandlerBase.java 3 May 2004 15:30:42 -0000 1.11 @@ -74,6 +74,10 @@ props.put(org.jboss.mail.smtp.SMTPConstants.AUTH_METHODS, "AUTH LOGIN PLAIN"); props.put(org.jboss.mail.smtp.SMTPConstants.USER_REPOSITORY, createFakeUR()); props.put(org.jboss.mail.smtp.SMTPConstants.MAX_MSG_SIZE, new Long(1000000)); + props.put(org.jboss.mail.smtp.SMTPConstants.MAX_RECEIVED_HEADERS, new Long(100)); + props.put(org.jboss.mail.smtp.SMTPConstants.RECEIVED_HEADERS_THRESHOLD, new Long(20)); + props.put(org.jboss.mail.smtp.SMTPConstants.MAX_OWN_RECEIVED_HEADERS, new Long(5)); + List lsnrs = new ArrayList(); lsnrs.add(new ConcreteMailListener()); props.put(org.jboss.mail.smtp.SMTPConstants.MAIL_LISTENERS,lsnrs); 1.8 +114 -22 jboss-mail/src/test/org/jboss/mail/smtp/handlers/TestCmdDATA.java Index: TestCmdDATA.java =================================================================== RCS file: /cvsroot/jboss/jboss-mail/src/test/org/jboss/mail/smtp/handlers/TestCmdDATA.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- TestCmdDATA.java 30 Apr 2004 19:48:36 -0000 1.7 +++ TestCmdDATA.java 3 May 2004 15:30:42 -0000 1.8 @@ -90,17 +90,7 @@ String localHostAddress = ((InetAddress)protocol.getState(ServerThread.STATE_LOCAL_ADDRESS)).getHostAddress(); String serverName = (String)protocol.getProperty(SMTPProtocol.SERVER_NAME); - for (int i = 0 ; i < 10 ; i++){ - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); + for (int i = 0 ; i < 99 ; i++){ sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); } @@ -144,24 +134,126 @@ expected.equals(res.toString().trim())); } - public void testLoopDetectionWithLoop() throws Exception { + public void testLoopDetectionWithTooManyReceivedHeadersLoop() throws Exception { StringBuffer sb = new StringBuffer(); String localHostAddress = ((InetAddress)protocol.getState(ServerThread.STATE_LOCAL_ADDRESS)).getHostAddress(); String serverName = (String)protocol.getProperty(SMTPProtocol.SERVER_NAME); - for (int i = 0 ; i < 10 ; i++){ - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); + for (int i = 0 ; i < 101 ; i++){ sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); + } + + sb.append("Message-ID: <3F328D84.3080108@localhost>\r\n"); + sb.append("Date: Thu, 07 Aug 2003 13:33:56 -0400\r\n"); + sb.append("From: Andrew Oliver <test@localhost>\r\n"); + sb.append( + "User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.3) Gecko/20030312\r\n"); + sb.append("X-Accept-Language: en-us, en\r\n"); + sb.append("MIME-Version: 1.0\r\n"); + sb.append("To: test@localhost\r\n"); + sb.append("Subject: Test Subject\r\n"); + sb.append( + "Content-Type: text/plain; charset=us-ascii; format=flowed\r\n"); + sb.append("Content-Transfer-Encoding: 7bit\r\n\r\n"); + sb.append("Message body\r\n"); + sb.append(".\r\n"); + + //set sender (this WOULD happen in the MAIL command) + MailAddress address = MailAddress.parseSMTPStyle("<test@localhost>"); + super.setProtocolState(SMTPConstants.SENDER, address); + //set receipient (this would happen in the RCPT command) + List rcpts = new ArrayList(1); + rcpts.add(address); + super.setProtocolState(SMTPConstants.RCPT_LIST, rcpts); + + ByteArrayInputStream in = + new ByteArrayInputStream(sb.toString().getBytes()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + SMTPRequest request = createRequest("DATA", in, new String[] { "" }); + + SMTPResponse response = this.handleRequest(out, request); + String res = out.toString(); + System.out.println("res was " + res); + + assertTrue("resposne can't be null", response != null); + String expected = + "354 Ok Send data ending with <CRLF>.<CRLF>"+newline+"550 SMTP loop? Too many Received headers. Max allowed is 100"; + assertTrue( + "expected: " + expected + ", got=" + res.toString().trim(), + expected.equals(res.toString().trim())); + } + + public void testLoopDetectionWithTooManyOwnReceivedHeadersLoop() throws Exception { + StringBuffer sb = new StringBuffer(); + String localHostAddress = ((InetAddress)protocol.getState(ServerThread.STATE_LOCAL_ADDRESS)).getHostAddress(); + String serverName = (String)protocol.getProperty(SMTPProtocol.SERVER_NAME); + + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + + for (int i = 0 ; i < 20 ; i++){ sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); + } + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + + + sb.append("Message-ID: <3F328D84.3080108@localhost>\r\n"); + sb.append("Date: Thu, 07 Aug 2003 13:33:56 -0400\r\n"); + sb.append("From: Andrew Oliver <test@localhost>\r\n"); + sb.append( + "User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.3) Gecko/20030312\r\n"); + sb.append("X-Accept-Language: en-us, en\r\n"); + sb.append("MIME-Version: 1.0\r\n"); + sb.append("To: test@localhost\r\n"); + sb.append("Subject: Test Subject\r\n"); + sb.append( + "Content-Type: text/plain; charset=us-ascii; format=flowed\r\n"); + sb.append("Content-Transfer-Encoding: 7bit\r\n\r\n"); + sb.append("Message body\r\n"); + sb.append(".\r\n"); + + //set sender (this WOULD happen in the MAIL command) + MailAddress address = MailAddress.parseSMTPStyle("<test@localhost>"); + super.setProtocolState(SMTPConstants.SENDER, address); + //set receipient (this would happen in the RCPT command) + List rcpts = new ArrayList(1); + rcpts.add(address); + super.setProtocolState(SMTPConstants.RCPT_LIST, rcpts); + + ByteArrayInputStream in = + new ByteArrayInputStream(sb.toString().getBytes()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + SMTPRequest request = createRequest("DATA", in, new String[] { "" }); + + SMTPResponse response = this.handleRequest(out, request); + String res = out.toString(); + System.out.println("res was " + res); + + assertTrue("resposne can't be null", response != null); + String expected = + "354 Ok Send data ending with <CRLF>.<CRLF>"+newline+"550 SMTP loop? More than 5 Received headers contain the name of our server: localhost"; + assertTrue( + "expected: " + expected + ", got=" + res.toString().trim(), + expected.equals(res.toString().trim())); + } + + public void testLoopDetectionWithOKOwnAndTotalReceivedHeadersNoLoop() throws Exception { + StringBuffer sb = new StringBuffer(); + String localHostAddress = ((InetAddress)protocol.getState(ServerThread.STATE_LOCAL_ADDRESS)).getHostAddress(); + String serverName = (String)protocol.getProperty(SMTPProtocol.SERVER_NAME); + + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + + for (int i = 0 ; i < 30 ; i++){ sb.append("Received: from mail.lala.com (mail.xyz.com 192.123.123.123) by mail.external.com\r\n"); - sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); } + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Received: from lala.com (mail.xyz.com 192.123.123.123) by " + serverName + " (" + localHostAddress + ")\r\n"); + sb.append("Message-ID: <3F328D84.3080108@localhost>\r\n"); sb.append("Date: Thu, 07 Aug 2003 13:33:56 -0400\r\n"); @@ -197,7 +289,7 @@ assertTrue("resposne can't be null", response != null); String expected = - "354 Ok Send data ending with <CRLF>.<CRLF>"+newline+"550 Loop detected"; + "354 Ok Send data ending with <CRLF>.<CRLF>"+newline+"250 Message received"; assertTrue( "expected: " + expected + ", got=" + res.toString().trim(), expected.equals(res.toString().trim())); |