SMTP
SMTP Aktarım Örneği

SMTP aracılığıyla aynı posta alanına (example.com) bağlı iki posta kutusuna (alice ve theboss) mesaj gönderme örneği, aşağıdaki oturum değişimiyle yeniden üretilmiştir. (Bu örnekte, konuşma parçaları sunucu ve istemci için sırasıyla S: ve C: ile ön eklenmiştir; bu etiketler değişimin bir parçası değildir.)
Mesaj gönderen (SMTP istemcisi), mesaj alıcısına (SMTP sunucusu) güvenilir bir iletişim kanalı oluşturduktan sonra, oturumu genellikle FQDN (tam nitelikli etki alanı adı) içeren bir karşılama ile açar. Bu örnekte, karşılama komutunda smtp.example.com kullanılmıştır. İstemci, FQDN'sini (veya mevcut değilse bir IP adresini) içeren bir komutla kendini tanımlayarak diyalog başlatır.
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
İstemci, mesajın kaynak e-posta adresini bildirmek için MAIL FROM komutunu kullanarak alıcıyı bilgilendirir. Bu ayrıca mesajın teslim edilememesi durumunda geri dönüş veya bounce adresidir. Bu örnekte e-posta mesajı aynı SMTP sunucusunda bulunan iki posta kutusuna gönderilir: To: ve Cc: başlık alanlarında listelenen her bir alıcı için bir adet. Karşılık gelen SMTP komutu RCPT TO'dur. Her bir komutun başarılı bir şekilde alınması ve işleme konulması sunucu tarafından bir sonuç kodu ve yanıt mesajı ile onaylanır (örneğin, 250 Ok).
Mail mesajının gövdesinin aktarımı, bir DATA komutuyla başlatılır ve ardından kelimesi kelimesine aktarılır ve sonuçlandırıcı bir veri dizisiyle sonlandırılır. Bu dizi, bir yeni satır (<CR><LF>), tek bir tam nokta (.) ve başka bir yeni satır (<CR><LF>) içerir. Bir mesaj gövdesi, metin olarak bir periyod içeren bir satır içerebileceğinden, istemci, her bir satır periyodla başladığında iki periyod gönderir; buna karşılık, sunucu, her bir satırın başındaki iki periyod dizisini tek bir periyoda dönüştürür. Bu kaçırma yöntemi nokta-doldurma olarak adlandırılır.
Sunucunun mesajın teslimiyle ilgili olumlu yanıtı, örnekteki gibi, sunucunun mesajın tesliminden sorumlu olduğu anlamına gelir. Bu sırada bir iletişim hatası olması durumunda mesaj iki kez gönderilebilir, örneğin bir güç kesintisi nedeniyle: Gönderen, 250 Ok yanıtını alana kadar mesajın teslim edilmediğini varsaymalıdır. Öte yandan, alıcı mesajı kabul etmeye karar verdiğinde, mesajın kendisine teslim edildiğini varsaymalıdır. Bu nedenle, bu süre boyunca, her iki aracın da teslim etmeye çalışacakları aktif kopyaları vardır. İletinin gövdesinde yaptığı filtreleme miktarıyla doğru orantılı olarak, bir iletişim hatası bu adımda tam olarak oluşma olasılığı, genellikle istenmeyen e-postaların engellenmesi için yapılacak filtreleme işlemiyle ilgilidir. Sınırlayıcı zaman aşımı 10 dakika olarak belirlenmiştir.
QUIT komutu oturumu sonlandırır. Eğer e-postanın başka alıcıları farklı bir yerde bulunuyorsa, müşteri mevcut hedefler için kuyruğa alındıktan sonra QUIT yapacak ve sonraki alıcılar için uygun bir SMTP sunucusuna bağlanacaktır. Müşterinin HELO ve MAIL FROM komutlarında gönderdiği bilgiler, alıcı sunucu tarafından ek header alanları olarak mesaja eklenir. Sırasıyla, Received ve Return-Path header alanları eklenir.
Bazı istemciler, mesaj kabul edildikten sonra bağlantıyı kapatarak uygulanır (250 Ok: queued as 12345), bu nedenle son iki satır aslında atlanabilir. Bu, sunucunun 221 Bye yanıtını göndermeye çalışırken bir hata oluşmasına neden olur.