Issuing Test Request to an SSL Server

While diagnosing problems between Server and browsers, it is useful to analyze the requests and responses.

When SSL/TLS is not used, for capturing requests and responses between web browser and the server you can use any network capture tool such as ethereal. But when SSL/TLS is used for communication, you can use the OpensSSL’s s_client application for tapping the communication.

Execute the following command (after successful SSL connection) and enter the test HTTP request as desired.

$openssl s_client -host localhost -port 8080 -quiet

By using the same command without the -quiet flag, you can see information about the connection, such as the server DN, Certificate name and negotiated cipher suite.

For testing particular cipher suites, check the -cipher option. For example:

$openssl s_client -host localhost -port 8080 -cipher DES-CBC-SHA

For more information, see the s_client man page at


How to use Telnet to test SMTP communication

When you run the commands, replace these values with ones for your SMTP server, sourceDomain, etc.

Destination SMTP server:
Source domain: dev.prodDomain
Sender’s e-mail address:
Recipient’s e-mail address:
Message subject: Test Mail
Message body: This is a test message

(1) Open a Command Prompt window, type telnet, and then press Enter. This command opens the Telnet session.
(2) Type set localecho, and then press Enter. This optional command lets you view the characters as you type them, and it might be required for some SMTP servers.
(3) Type set logfile <filename>, and then press Enter.This optional command enables logging and specifies the log file for the Telnet session. If you only specify a file name, the log file is located in the current folder. If you specify a path and file name, the path needs to be on the local computer, and you might need to enter the path and file name in the Windows DOS 8.3 format (short name with no spaces). The path needs to exist, but the log file is created automatically.
(4) Type OPEN 25 and then press Enter.
(5) Type EHLO dev.prodDomain, and then press Enter.
(6) Type MAIL FROM:<>, and then press Enter.
(7) Type RCPT TO:<> NOTIFY=success,failure, and then press Enter. The optional NOTIFY command specifies the particular delivery status notification (DSN) messages (also known as bounce messages, nondelivery reports, or NDRs) that the SMTP is required to provide. In this example, you’re requesting a DSN message for successful or failed message delivery.
(8) Type DATA, and then press Enter.
(9) Type Subject: Test Mail, and then press Enter.
(10) Type This is a test message, and then press Enter.
(11) Type a period ( . ), and then press Enter.
(12) To disconnect from the SMTP server, type QUIT, and then press Enter.
(13) To close the Telnet session, type quit, and then press Enter.

Here’s what a successful session output using the steps above looks like:

C:\> telnet
Microsoft Telnet> set localecho
Microsoft Telnet> set logfile c:\TelnetLog.txt
Microsoft Telnet> OPEN 25
EHLO dev.prodDomain Hello [], pleased to meet you
250-SIZE 37748736
250 2.1.0 Sender OK
RCPT TO: <> NOTIFY=success,failure
250 2.1.5 Recipient OK
354 Start mail input; end with <CRLF>.<CRLF>
Subject: Test Mail

This is a test message.
250 2.6.0 <> [InternalId=5111011082268,] Queued mail for delivery
221 2.0.0 Service closing transmission channel

(403) Forbidden Error Message

There could be a couple of reasons when we can see a (403) Forbidden error message in dynamic web-application. Details for the same could be found at given below URL :-



However, today in our application we have faced the same scenario wherein we got (403) Forbidden error message while hitting the URL :


After initial investigation, it has been found that due to network/firewall patches, we have to give the full qualified URLs i.e.


Enjoy Learning 🙂

Vertical Scaling vs Horizontal Scaling

Vertical Scaling is the addition of extra resources to the servers in a network. For example, a business runs up against storage capacity limits, so they choose to add extra or larger hard drives to their existing servers. It is the old fashioned approach, and it tends to be significantly more expensive than the horizontal scaling we’re going to look at below. If a company expects to be vertically scaling their existing hardware, then that hardware has to be built with the possibility in mind. It has to have excess capacity, extra drive bays, and so on, that will end up sitting idle until the moment of expansion comes. Such hardware tends to be significantly more expensive than commodity hardware: hardware prices don’t scale linearly.

Vertical scaling is also fairly inefficient when it comes to resource reallocation. Because servers tend to be dedicated to particular tasks, it can be hard to reallocate the spare resources of a server to other, more pressing tasks. That’s why virtualization has become so popular.

Horizontal Scaling, on the other hand, involves adding more nodes to the system as it scales, rather than beefing up the existing nodes. This is by far the most popular scaling strategy in modern times. Google, Facebook, and other huge enterprises rely on using many nodes of relatively inexpensive commodity-class hardware, which they can add to and retask as the need arises. Because horizontal scaling is the growth method of choice for very large Internet enterprises, software has been developed that makes distributing file serving, databases, and virtualization across an expanding pool of nodes practical. For example, Google’s Spanner is a distributed database that is designed to scale at globally. The increasingly popular Hadoop software framework has horizontal scaling as a key design principle.