diff options
-rw-r--r-- | docs/HOWTO: Parsing email using Python part1–Skupiny Google.html | 449 | ||||
-rw-r--r-- | docs/RFC 1036 - Standard for interchange of USENET messages.html | 1137 | ||||
-rw-r--r-- | docs/RFC 2821 - Simple Mail Transfer Protocol.html | 4495 | ||||
-rw-r--r-- | docs/RFC 3977 - Network News Transfer Protocol (NNTP).html | 7068 | ||||
-rw-r--r-- | docs/djb-envelope.html | 98 |
5 files changed, 13247 insertions, 0 deletions
diff --git a/docs/HOWTO: Parsing email using Python part1–Skupiny Google.html b/docs/HOWTO: Parsing email using Python part1–Skupiny Google.html new file mode 100644 index 0000000..214c931 --- /dev/null +++ b/docs/HOWTO: Parsing email using Python part1–Skupiny Google.html @@ -0,0 +1,449 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html><head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"><style><!--
+/* Effective stylesheet produced by snapshot save */
+HTML { margin: 0px ! important; border: medium none ! important; }
+.dragdrop-handle { cursor: move; -moz-user-select: none; }
+.dragdrop-draggable { }
+--></style><script async="">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script><script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script><script async="">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script><script type="text/javascript" language="javascript"><!--
+/* Script removed by snapshot save */
+--></script> +<title>HOWTO: Parsing email using Python part1–Skupiny Google</title> +<link rel="icon" href="index_files/favicon_ico"> +<link rel="shortcut icon" href="index_files/favicon_ico"> +<style>/* Effective stylesheet produced by snapshot save */ +</style><meta name="description" content="Skupiny Google umožňují vytvářet online fóra a e-mailové skupiny a účastnit se pestrých konverzací v rámci komunit."> +<meta name="gwt:property" content="locale=cs"> +<meta name="standalone::gwt:property" content="baseUrl=/forum/"> +<style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+.gb_jb { display: inline-block; padding: 0px 0px 0px 15px; vertical-align: middle; }
+.gb_jb:first-child, #gbsfw:first-child + .gb_jb { padding-left: 0px; }
+.gb_Xa { position: relative; }
+.gb_C { display: inline-block; outline: medium none; vertical-align: middle; border-radius: 2px; box-sizing: border-box; height: 30px; width: 30px; }
+#gb#gb a.gb_C { color: rgb(64, 64, 64); cursor: default; text-decoration: none; }
+#gb#gb a.gb_C:hover, #gb#gb a.gb_C:focus { color: rgb(0, 0, 0); }
+.gb_ia { border-color: transparent transparent rgb(255, 255, 255); border-style: dashed dashed solid; border-width: 0px 8.5px 8.5px; display: none; position: absolute; left: 6.5px; top: 37px; z-index: 1; height: 0px; width: 0px; animation: 0.2s ease 0s normal none 1 running gb__a; }
+.gb_ja { border-color: transparent transparent rgba(0, 0, 0, 0.2); border-style: dashed dashed solid; border-width: 0px 8.5px 8.5px; display: none; position: absolute; left: 6.5px; z-index: 1; height: 0px; width: 0px; animation: 0.2s ease 0s normal none 1 running gb__a; top: 36px; }
+.gb_F { background: none repeat scroll 0% 0% rgb(255, 255, 255); border: 1px solid rgba(0, 0, 0, 0.2); box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.2); display: none; outline: medium none; overflow: hidden; position: absolute; right: 0px; top: 44px; animation: 0.2s ease 0s normal none 1 running gb__a; border-radius: 2px; -moz-user-select: text; }
+@keyframes gb__a {
+ 0% { opacity: 0; }
+ 50% { opacity: 1; }
+}
+@keyframes gb__a {
+ 0% { opacity: 0; }
+ 50% { opacity: 1; }
+}
+.gb_Nc { left: 0px; min-width: 1177px; position: absolute; top: 0px; -moz-user-select: none; width: 100%; }
+.gb_Ub { font: 13px/27px Arial,sans-serif; position: relative; height: 60px; width: 100%; }
+#gba { height: 60px; }
+.gb_Ub > .gb_h { height: 60px; line-height: 58px; vertical-align: middle; }
+.gb_Ub:before { background: none repeat scroll 0% 0% rgb(229, 229, 229); bottom: 0px; content: ""; display: none; height: 1px; left: 0px; position: absolute; right: 0px; }
+.gb_Ub { background: none repeat scroll 0% 0% rgb(241, 241, 241); }
+.gb_h { display: inline-block; flex: 0 0 auto; }
+.gb_h.gb_Qc { float: right; order: 1; }
+.gb_Rc { white-space: nowrap; display: flex; margin-left: 0px ! important; margin-right: 0px ! important; }
+.gb_h { margin-left: 0px ! important; margin-right: 0px ! important; }
+.gb_Sa { background-image: url("urn:not-loaded:https://ssl.gstatic.com/gb/images/v1_376447c3.png"); background-size: 112px 2011px; }
+@media (min-resolution: 1.25dppx), not all, not all {
+ .gb_Sa { background-image: url(data:image/png;base64,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); }
+}
+#gb#gb a.gb_e, #gb#gb a.gb_f { color: rgb(64, 64, 64); text-decoration: none; }
+.gb_B .gb_C { background-position: 0px -735px; opacity: 0.55; }
+.gb_o { border: 1px solid rgb(255, 255, 255); border-radius: 2px; display: inline-block; vertical-align: top; height: 98px; width: 86px; }
+.gb_o:hover:not(.gb_p) { border: 1px solid rgb(229, 229, 229); }
+.gb_o.gb_q:not(.gb_p) { border: 1px solid rgb(229, 229, 229); box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1); }
+.gb_e { display: inline-block; font-size: 13px; margin: 8px 2px; text-align: center; outline: medium none; }
+.gb_e .gb_s, .gb_e .gb_c { display: inline-block; vertical-align: top; height: 64px; width: 64px; }
+.gb_t { display: block; line-height: 20px; overflow: hidden; white-space: nowrap; width: 84px; text-overflow: ellipsis; }
+.gb_o:hover .gb_e { z-index: 1; }
+.gb_o:hover .gb_t { background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.9); white-space: normal; word-wrap: break-word; }
+.gb_e .gb_s { background-image: url("urn:not-loaded:https://ssl.gstatic.com/gb/images/v1_376447c3.png"); background-size: 112px 2011px; }
+@media (min-resolution: 1.25dppx), not all, not all {
+ .gb_e .gb_s { background-image: url(data:image/png;base64,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); }
+}
+ul.gb_z li.gb_w:not(:first-child) .gb_x, ul.gb_z li.gb_w .gb_y, ul.gb_A li.gb_w .gb_x, ul.gb_A li.gb_w:not(:last-child) .gb_y { visibility: visible; }
+.gb_B .gb_C:hover, .gb_B .gb_C:focus { opacity: 0.85; }
+.gb_B .gb_F { min-height: 196px; overflow-y: auto; width: 320px; }
+.gb_I { background: none repeat scroll 0% 0% rgb(255, 255, 255); margin: 0px; min-height: 100px; padding: 28px 27px 28px 28px; text-align: left; white-space: normal; width: 265px; }
+.gb_E { background: none repeat scroll 0% 0% rgb(245, 245, 245); cursor: pointer; height: 40px; overflow: hidden; }
+.gb_J { position: relative; }
+.gb_E { display: block; line-height: 40px; text-align: center; width: 320px; }
+.gb_J { display: block; line-height: 40px; text-align: center; }
+#gb a.gb_E, #gb a.gb_E:visited, #gb a.gb_E:active, #gb a.gb_J, #gb a.gb_J:visited { color: rgb(115, 115, 115); text-decoration: none; }
+#gb a.gb_J:active { color: rgb(115, 115, 115); }
+.gb_J, .gb_I { display: none; }
+.gb_z, .gb_z + .gb_J, .gb_L .gb_J, .gb_L .gb_I { display: block; }
+#gb a.gb_J:hover, #gb a.gb_J:active { text-decoration: underline; }
+.gb_J { border-bottom: 1px solid rgb(235, 235, 235); left: 28px; width: 264px; }
+.gb_J:last-child { border-bottom-width: 0px; }
+.gb_P .gb_E { margin-top: 0px; position: static; }
+.gb_X { background: none repeat scroll 0% 0% rgb(248, 248, 248); border: 1px solid rgb(198, 198, 198); display: inline-block; line-height: 28px; padding: 0px 12px; border-radius: 2px; }
+#gb a.gb_X.gb_X { color: rgb(102, 102, 102); cursor: default; text-decoration: none; }
+.gb_Z { border: 1px solid rgb(66, 133, 244); font-weight: bold; outline: medium none; background: -moz-linear-gradient(center top , rgb(67, 135, 253), rgb(70, 131, 234)) repeat scroll 0% 0% transparent; }
+#gb a.gb_Z.gb_Z { color: rgb(255, 255, 255); }
+.gb_Z:hover { box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15); }
+.gb_Z:active { box-shadow: 0px 2px 0px rgba(0, 0, 0, 0.15) inset; background: -moz-linear-gradient(center top , rgb(60, 122, 228), rgb(63, 118, 211)) repeat scroll 0% 0% transparent; }
+.gb_7:not(.gb_d) .gb_6:before, .gb_7:not(.gb_d) .gb_8:before { content: none; }
+#gbsfw { min-width: 400px; overflow: visible; }
+.gb_Na { min-width: 152px; overflow: hidden; position: relative; z-index: 987; }
+.gb_Oa { position: absolute; padding: 0px 30px; }
+.gb_Qa { display: inline-block; outline: medium none; vertical-align: middle; }
+.gb_Ra .gb_Qa { position: relative; top: 2px; }
+.gb_Qa .gb_Sa, .gb_Ta { display: block; }
+.gb_Qa .gb_Sa { background-position: 0px -1943px; height: 33px; width: 92px; }
+@keyframes gb__nb {
+ 0% { transform: scale(0, 0); }
+ 20% { transform: scale(1.4, 1.4); }
+ 50% { transform: scale(0.8, 0.8); }
+ 85% { transform: scale(1.1, 1.1); }
+ 100% { transform: scale(1, 1); }
+}
+@keyframes gb__nb {
+ 0% { transform: scale(0, 0); }
+ 20% { transform: scale(1.4, 1.4); }
+ 50% { transform: scale(0.8, 0.8); }
+ 85% { transform: scale(1.1, 1.1); }
+ 100% { transform: scale(1, 1); }
+}
+.gb_Wa:not(.gb_5a) .gb_ja, .gb_Wa:not(.gb_5a) .gb_ia { left: 3px; }
+.gbqfb, .gbqfba, .gbqfbb { cursor: default ! important; display: inline-block; font-weight: bold; height: 29px; line-height: 29px; min-width: 54px; padding: 0px 8px; text-align: center; text-decoration: none ! important; border-radius: 2px; -moz-user-select: none; }
+.gbqfb::-moz-focus-inner { border: 0px none; }
+.gbqfba::-moz-focus-inner { border: 0px none; }
+.gb_Cb { position: relative; width: 650px; z-index: 986; }
+#gbq2 { padding-top: 15px; }
+.gb_Db .gb_Cb { min-width: 200px; flex: 0 2 auto; }
+.gb_Db #gbqf { margin-right: 0px; display: flex; }
+.gb_Db .gbqff { min-width: 0px; flex: 1 1 auto; }
+#gbq2 { display: block; }
+#gbqf { display: block; margin: 0px 60px 0px 0px; white-space: nowrap; }
+.gbqff { border: medium none; display: inline-block; margin: 0px; padding: 0px; vertical-align: top; width: 100%; }
+.gbqfqw, #gbqfb, .gbqfwa { vertical-align: top; }
+#gbqfaa, #gbqfab, #gbqfqwb { position: absolute; }
+#gbqfaa { left: 0px; }
+#gbqfab { right: 0px; }
+.gbqfqwb, .gbqfqwc { right: 0px; left: 0px; height: 100%; }
+.gbqfqwb { padding: 0px 8px; }
+#gbqfbw { display: inline-block; vertical-align: top; }
+#gbqfb { border: 1px solid transparent; border-bottom-left-radius: 0px; border-top-left-radius: 0px; height: 30px; margin: 0px; outline: medium none; padding: 0px; width: 60px; box-shadow: none; box-sizing: border-box; background: -moz-linear-gradient(center top , rgb(67, 135, 253), rgb(70, 131, 234)) repeat scroll 0% 0% transparent; }
+#gbqfb:hover { box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15); }
+#gbqfb:focus { box-shadow: 0px 0px 0px 1px rgb(255, 255, 255) inset; }
+#gbqfb:hover:focus { box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15), 0px 0px 0px 1px rgb(255, 255, 255) inset; }
+#gbqfb:active:active { border: 1px solid transparent; box-shadow: 0px 2px 0px rgba(0, 0, 0, 0.15) inset; background: -moz-linear-gradient(center top , rgb(60, 122, 228), rgb(63, 118, 211)) repeat scroll 0% 0% transparent; }
+.gbqfi { background-position: -69px -1623px; display: inline-block; margin: -1px; height: 30px; width: 30px; }
+.gbqfqw { background: none repeat scroll 0% 0% padding-box rgb(255, 255, 255); border-width: 1px 0px 1px 1px; border-style: solid; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-color: rgba(0, 0, 0, 0.15); height: 30px; box-sizing: border-box; }
+#gbqfqw { position: relative; }
+.gbqfqw.gbqfqw:hover { border-color: rgba(0, 0, 0, 0.3); }
+.gbqfwa { display: inline-block; width: 100%; }
+.gbqfqw.gbqfqw:active, .gbqfqw.gbqfqwf.gbqfqwf { border-color: rgb(66, 133, 244); }
+#gbqfq, #gbqfqb, #gbqfqc { background: none repeat scroll 0% 0% transparent; border: medium none; height: 20px; margin-top: 4px; padding: 0px; vertical-align: top; width: 100%; }
+#gbqfq:focus, #gbqfqb:focus, #gbqfqc:focus { outline: medium none; }
+.gb_7 { min-width: 315px; padding-left: 30px; padding-right: 30px; position: relative; text-align: right; z-index: 986; align-items: center; justify-content: flex-end; }
+.gb_7.gb_h { flex: 1 1 auto; }
+.gb_Bc { line-height: normal; position: relative; text-align: left; }
+.gb_Bc.gb_h, .gb_Cc.gb_h, .gb_ba.gb_h { flex: 0 1 auto; }
+.gb_Dc, .gb_Ec { display: inline-block; padding: 0px 0px 0px 15px; position: relative; vertical-align: middle; }
+.gb_ea:not(.gb_ga) .gb_Jc, .gb_k .gb_Ic { display: inline-block; }
+.gb_ea:not(.gb_ga) .gb_Kc { display: none; }
+.gb_7.gb_h.gb_k, .gb_k:not(.gb_ga) .gb_Bc { flex: 0 0 auto; }
+.gb_Db .gb_7 { min-width: 0px; }
+.gbxx { display: none ! important; }
+#gbq { line-height: normal; position: relative; top: 0px; white-space: nowrap; }
+#gbq { left: 0px; width: 100%; }
+#gbq2 { top: 0px; z-index: 986; }
+--></style> +<script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script><script charset="UTF-8" type="text/javascript" async="">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> +<script type="text/javascript" language="javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> +<script type="text/javascript" language="javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> +<script type="text/javascript" language="javascript"><!--
+/* Script removed by snapshot save */
+--></script> +<script type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> +<script type="text/javascript" language="javascript"><!--
+/* Script removed by snapshot save */
+--></script><style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+#gb119 .gb_s:before { left: 0px; top: -1667px; }
+#gb1 .gb_s:before { left: 0px; top: -459px; }
+#gb36 .gb_s:before { left: -17px; top: -1011px; }
+#gb8 .gb_s:before { left: 0px; top: -69px; }
+#gb78 .gb_s:before { left: 0px; top: -528px; }
+#gb5 .gb_s:before { left: -35px; top: -1218px; }
+#gb23 .gb_s:before { left: -35px; top: -942px; }
+#gb49 .gb_s:before { left: 0px; top: -390px; }
+#gb24 .gb_s:before { left: -35px; top: -735px; }
+#gb51 .gb_s:before { left: 0px; top: -873px; }
+#gb6 .gb_s:before { left: 0px; top: -195px; }
+#gb30 .gb_s:before { left: 0px; top: -1874px; }
+#gb31 .gb_s:before { left: 0px; top: -1736px; }
+#gb25 .gb_s:before { left: 0px; top: 0px; }
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+html { margin: 0px; padding: 0px; border: 0px none; vertical-align: baseline; }
+body { margin: 0px; padding: 0px; border: 0px none; vertical-align: baseline; background: none repeat scroll 0% 0% rgb(255, 255, 255); font-family: "Arial","Helvetica",sans-serif; color: rgb(34, 34, 34); font-size: 13px; height: 100%; overflow-y: hidden; overflow-x: auto; }
+div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, address, big, cite, code, del, dfn { margin: 0px; padding: 0px; border: 0px none; vertical-align: baseline; }
+font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, fieldset, form, label, legend, table { margin: 0px; padding: 0px; border: 0px none; vertical-align: baseline; }
+tbody, tfoot, thead, tr { margin: 0px; padding: 0px; border: 0px none; vertical-align: baseline; }
+th, td { margin: 0px; padding: 0px; border: 0px none; vertical-align: baseline; text-align: left; font-weight: normal; }
+table { border-collapse: separate; border-spacing: 0px; }
+input::-moz-focus-inner, iframe { border: 0px none; }
+html { height: 100%; background-color: rgb(255, 255, 255); }
+.GJHURADLPC { position: fixed; overflow: hidden; width: 100%; height: 100%; }
+h1, h2, h3, h4, h5 { font-size: 16px; line-height: 24px; font-weight: normal; color: rgb(34, 34, 34); }
+p { margin: 0px 0px 1em; font-size: 13px; line-height: 18px; }
+li { line-height: 17px; }
+a { text-decoration: none; color: rgb(17, 85, 204); cursor: pointer; }
+a:visited { color: rgb(102, 17, 204); }
+a:active { color: rgb(209, 72, 54); }
+input[type="text"], input[type="password"] { border-right: 1px solid rgb(217, 217, 217); border-width: 1px; border-style: solid; border-color: rgb(192, 192, 192) rgb(217, 217, 217) rgb(217, 217, 217); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; vertical-align: top; box-sizing: border-box; display: inline-block; background-color: rgb(255, 255, 255); line-height: 27px; padding-left: 8px; color: rgb(34, 34, 34); height: 29px; }
+input[type="text"]:hover, input[type="password"]:hover, textarea:hover, .editable:hover { border-right: 1px solid rgb(185, 185, 185); border-width: 1px; border-style: solid; border-color: rgb(160, 160, 160) rgb(185, 185, 185) rgb(185, 185, 185); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1) inset; }
+input[type="text"]:focus, input[type="password"]:focus, textarea:focus, .editable:focus { box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3) inset; outline: medium none; border: 1px solid rgb(77, 144, 254); }
+#gbqfq { border: medium none ! important; box-shadow: none ! important; line-height: normal ! important; }
+.gux-confirm-panel-r1, .gux-confirm-panel-r2, .gux-confirm-panel-r3, .gux-confirm-panel-r4 { display: none; }
+.gux-confirm-panel-c { padding: 7px 16px ! important; background: none repeat scroll 0% 0% rgb(249, 237, 190) ! important; border: 1px solid rgb(240, 195, 109); border-radius: 2px; line-height: 16px; font-size: 11px; position: relative; }
+.gux-confirm-panel-c a, .gux-confirm-panel-c a:visited { color: rgb(51, 51, 51); text-decoration: underline; }
+.gux-confirm-panel-c a:hover { color: rgb(32, 32, 32); }
+.gux-confirm-panel-message { color: inherit ! important; font-weight: inherit ! important; }
+.GJHURADDQC { text-align: center; padding: 16px; }
+.GJHURADDQC .gux-confirm-panel-c { display: inline-block; }
+.GJHURADJPC { position: relative; overflow: hidden; height: 58px; border-bottom: 1px solid rgb(235, 235, 235); }
+.GJHURADKPC { font-size: 20px; position: absolute; left: 44px; top: 18px; color: rgb(221, 75, 57); }
+.GJHURADJRC .GJHURADKPC { left: 28px; }
+.GJHURADEWC .GJHURADKPC { left: 30px; }
+.GJHURADKPC a, .GJHURADKPC a:hover, .GJHURADKPC a:visited { color: rgb(221, 75, 57); }
+.GJHURADIPC { position: relative; font-size: 20px; font-weight: normal; color: rgb(34, 34, 34); white-space: nowrap; overflow: hidden; margin-top: 14px; min-height: 30px; margin-right: 44px; }
+.GJHURADJRC .GJHURADIPC { margin-right: 28px; }
+.GJHURADEWC .GJHURADIPC { margin-right: 30px; }
+.GJHURADJUC { color: rgb(102, 102, 102); }
+.GJHURADATC { color: rgb(17, 85, 204); text-decoration: none; cursor: pointer; white-space: nowrap; }
+.GJHURADOTC { color: rgb(17, 85, 204); text-decoration: none; cursor: pointer; white-space: nowrap; padding-left: 8px; }
+.GJHURADGSC { color: rgb(170, 170, 170) ! important; }
+.GJHURADASC { color: red; vertical-align: baseline; font-size: 0.83em; position: relative; top: -0.4em; }
+.GJHURADHVC { white-space: nowrap; padding: 0px 2px; font-size: 11px; }
+.GJHURADORC, .GJHURADMSC, .GJHURADITC { color: rgb(238, 68, 68); }
+.GJHURADCTC { display: inline-block; }
+.GJHURADFRC { overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAIklEQVR42mOIjIz8z4AMQAIogjABuCCyAFgQpwoUM5AtAQDYECCh1fwQRAAAAABJRU5ErkJggg==") no-repeat scroll 0px 0px transparent; display: inline-block; width: 5px; height: 7px; transition: all 0.218s ease 0s; transform: rotate(90deg); opacity: 0.8; }
+.GJHURADKQC { overflow-y: scroll ! important; }
+.GJHURADLQC { padding-right: 28px; }
+.GJHURADJRC .GJHURADLQC { padding-right: 12px; }
+.GJHURADEWC .GJHURADLQC { padding-right: 14px; }
+.GJHURADAQC { position: absolute; right: 44px; top: 3px; font-size: 11px; color: rgb(136, 136, 136); }
+.GJHURADHUC { position: relative; }
+.GJHURADGQC { overflow-y: hidden ! important; }
+.GJHURADGQC:hover { overflow-y: auto; }
+.GJHURADAPC { cursor: pointer; }
+.GJHURADAPC img { opacity: 0.667; margin: 12px 6px 11px; }
+.GJHURADAPC:hover img { opacity: 1; }
+.GJHURADN0C { cursor: pointer; font-size: 13px; display: block; }
+.GJHURADI0C { position: relative; margin: 0px; }
+.GJHURADJ0C { padding: 16px 0px 16px 28px; }
+.GJHURADJRC .GJHURADJ0C { padding: 16px 0px 16px 12px; }
+.GJHURADEWC .GJHURADJ0C { padding-left: 14px; }
+.GJHURADH0C { font-size: 13px; padding: 0px; margin: 0px; position: relative; }
+.GJHURADD-C { padding-bottom: 5px; }
+.GJHURADH0C div a, .GJHURADN0C a, .GJHURADN0C a:visited { display: block; overflow: hidden; position: relative; white-space: nowrap; text-decoration: none; color: rgb(51, 51, 51); cursor: pointer; font-size: 13px; line-height: 30px; padding-left: 16px; }
+.GJHURADJRC .GJHURADH0C div a, .GJHURADJRC .GJHURADN0C a { line-height: 24px; }
+.GJHURADM0C, .GJHURADM0C .GJHURADM0C { margin-left: 12px; }
+.GJHURADM0C .GJHURADO-C a { padding-left: 4px; }
+.GJHURADH0C div a { position: relative; }
+.GJHURADF-C { position: absolute; top: 5px; bottom: 5px; left: 0px; right: 0px; }
+.GJHURADH0C div.GJHURADO-C a:hover, .GJHURADH0C div.GJHURADE-C a:hover { color: rgb(34, 34, 34); background-color: rgb(238, 238, 238); }
+.GJHURADKUC > div > a span, .GJHURADKUC > a span { color: rgb(209, 72, 54); }
+.GJHURADFSC, .GJHURADO0C:hover { background-color: rgb(238, 238, 238); }
+.GJHURADH0C div.GJHURADE-C, .GJHURADE-C > a .GJHURADA0C { cursor: default; }
+.GJHURADA0C { display: block; overflow: hidden; text-overflow: ellipsis; padding-left: 12px; }
+.GJHURADA0C > h3 { display: inline; }
+.GJHURADA0C > * { font-size: 13px; }
+.GJHURADH0C div.GJHURADE0C > a .GJHURADA0C { padding-left: 0px; }
+.GJHURADM0C div.GJHURADE0C > a .GJHURADA0C { padding-left: 4px; }
+.GJHURADO0C { display: inline-block; width: 17px; height: 20px; position: absolute; top: 4px; left: 0px; margin-left: -1px; z-index: 10; cursor: pointer; text-align: center; }
+.GJHURADJRC .GJHURADO0C { top: 2px; }
+.GJHURADH-C .GJHURADFRC { position: absolute; top: 7px; left: 6px; }
+.GJHURADH-C:hover .GJHURADFRC { opacity: 1; }
+.GJHURADG-C { height: 16px; width: 16px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAKUlEQVR42mNgoBQoKin+x4HfKygoGFBiAHGGEDCAIB41YNSA4WIApQAAAJwgHbr2Zo8AAAAASUVORK5CYII=") no-repeat scroll 0px 0px transparent; }
+.GJHURADE0C .GJHURADG-C { display: none; }
+.GJHURADK-C { position: absolute; top: 7px; opacity: 0.7; left: 4px; }
+.GJHURADJRC .GJHURADK-C { top: 4px; }
+.GJHURADH0C div.GJHURADO-C a:hover .GJHURADK-C, .GJHURADH-C:hover .GJHURADK-C, .GJHURADKUC .GJHURADK-C { opacity: 1; }
+.GJHURADH-C .GJHURADK-C { left: 16px; }
+.GJHURADO-C, .GJHURADE-C { position: relative; }
+.GJHURADB0C { padding-right: 20px; }
+.GJHURADP-C { display: block; float: right; position: relative; top: 7px; margin-left: 3px; font-size: 11px; color: rgb(102, 102, 102) ! important; background-color: rgb(238, 238, 238); padding: 2px 3px; line-height: 12px; font-weight: normal; }
+.GJHURADJRC .GJHURADP-C { top: 5px; }
+.GJHURADO-C a:hover .GJHURADP-C, .GJHURADE-C a:hover .GJHURADP-C { background-color: rgb(204, 204, 204); color: rgb(51, 51, 51) ! important; }
+.GJHURADL-C { display: none; }
+.GJHURADO-C:hover .GJHURADL-C, .GJHURADH-C:hover .GJHURADL-C, .GJHURADC-C { display: inline; }
+.GJHURADO-C .GJHURADG0C, .GJHURADE-C .GJHURADG0C { top: 8px; right: 3px; z-index: 2; position: absolute; height: 13px; width: 13px; overflow: hidden; }
+.GJHURADJRC .GJHURADO-C .GJHURADG0C, .GJHURADJRC .GJHURADE-C .GJHURADG0C { top: 6px; }
+.GJHURADG0C input { border: 0px none; padding: 0px; outline: medium none; }
+a.GJHURADF0C { height: 13px; width: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAN0lEQVR42mN49+7d/6dPnxKNQeoZQAxSAEj9UNJ05swZnBivTfg04HUeLg0E/YRNw1AJcnLSHgATt4m3KInFEAAAAABJRU5ErkJggg==") no-repeat scroll 0px 0px transparent; display: inline-block; padding: 0px ! important; }
+a.GJHURADF0C:hover, .GJHURADC-C a.GJHURADF0C { height: 13px; width: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAAOklEQVR42mO4fv36/2PHjhGNQeoZQIx3794RjUHqh5KmyMhInBivTfg04HUeLg0E/YRNw1AJcnLSHgBW6U4stsXoZgAAAABJRU5ErkJggg==") no-repeat scroll 0px 0px transparent; }
+.GJHURADC0C { padding: 4px 8px; }
+.GJHURADC0C div { background-color: rgb(249, 237, 190); border: 2px solid rgb(249, 237, 190); color: rgb(34, 34, 34); padding: 4px; line-height: 16px; border-radius: 6px; text-align: center; }
+.GJHURADH-C { position: relative; outline-style: none; }
+.GJHURADN-C { outline-style: none; margin-bottom: 9px; }
+.GJHURADJ-C { font-size: 11px; color: rgb(68, 68, 68); text-align: center; padding: 16px 0px 20px 16px; }
+.GJHURADJ-C a { white-space: nowrap; }
+.GJHURADJ-C a:visited { color: rgb(17, 85, 204); }
+.GJHURADM-C { border-top: 1px solid rgb(235, 235, 235); margin-top: 4px; margin-bottom: 10px; }
+.GJHURADD3 { color: rgb(17, 85, 204); text-decoration: none; cursor: pointer; white-space: nowrap; }
+.GJHURADJID { position: relative; top: 3px; height: 15px; width: 15px; }
+.GJHURADGYC { width: 100%; margin-right: 0px; height: 8px; position: absolute; top: 0px; left: 0px; opacity: 0; border-top: 1px solid rgb(235, 235, 235); }
+.GJHURADO5B, .GJHURADG5B { position: relative; }
+.GJHURADP5B, .GJHURADP5B > * { outline: medium none ! important; }
+.GJHURADE5B { width: 198px; position: absolute; left: 0px; }
+.GJHURADJ4B { margin-left: 220px; }
+.GJHURADJ4B:focus { outline: medium none; }
+.GJHURADJ5B { position: absolute; width: 8px; top: 0px; bottom: 0px; right: -20px; cursor: col-resize; }
+.GJHURADJ5B .GJHURADL5B { display: block; position: absolute; left: 5px; top: 0px; bottom: 0px; border-left: 1px solid rgb(235, 235, 235); }
+.GJHURADJ5B .GJHURADG4B { visibility: visible ! important; }
+html { min-width: 700px; overflow-x: auto; overflow-y: hidden; }
+body { min-width: 700px; overflow: visible; }
+#gb, #gbx1 { min-width: 700px; }
+.GJHURADP3B { overflow: hidden; min-height: 30px; }
+.GJHURADF5B { position: absolute; right: 0px; top: 0px; padding-left: 16px; }
+.GJHURADF5B > div > div { display: inline-block; margin-right: 0px; margin-left: 16px; }
+.GJHURADF5B > div > div:first-child { margin-left: 0px; }
+.GJHURADE4B { transform: rotate(180deg); vertical-align: middle; }
+.GJHURADK4B { transform: rotate(0deg); vertical-align: middle; }
+.GJHURADF4B { border: 1px solid rgb(235, 235, 235); padding: 4px; cursor: pointer ! important; }
+.GJHURADF4B:hover { background-color: rgb(238, 238, 238); }
+.GJHURADG4B:hover { visibility: visible; }
+.GJHURADG4B { visibility: hidden; position: absolute; right: 2px; top: 0px; bottom: 0px; padding: 8px 0px 8px 8px; }
+.GJHURADL4B { display: none; position: absolute; padding: 8px 0px; }
+.GJHURADJRC .GJHURADG4B { padding: 7px 0px 7px 7px; }
+.GJHURADJRC .GJHURADL4B { padding: 7px 0px; }
+.GJHURADDY { cursor: pointer; font-size: 11px; font-weight: bold; text-align: center; margin-right: 16px; white-space: nowrap; height: 27px; line-height: 27px; min-width: 54px; outline: 0px none; padding: 0px 8px; border-radius: 2px; display: inline-block; }
+.GJHURADDY:hover { border: 1px solid rgb(198, 198, 198); box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1); }
+.GJHURADDY img.GJHURADGY { vertical-align: middle; margin-top: -2px; opacity: 0.667; }
+.GJHURADMY img.GJHURADGY, .GJHURADFY img.GJHURADGY, .GJHURADDY:hover img.GJHURADGY { opacity: 1; }
+.GJHURADKY { min-width: 34px; padding: 0px 4px; }
+.GJHURADEY { cursor: default; opacity: 0.5; pointer-events: none; }
+.GJHURADIY { border-right-color: transparent; margin-right: 0px; }
+.GJHURADJY { border-radius: 0px; margin-left: -1px; margin-right: -1px; }
+.GJHURADLY { border-left-color: transparent; margin-left: 0px; }
+.GJHURADIY { border-radius: 2px 0px 0px 2px; }
+.GJHURADLY { border-radius: 0px 2px 2px 0px; margin-left: -1px; }
+.jfk-button-standard { color: rgb(102, 102, 102); border: 1px solid rgba(0, 0, 0, 0.1); background-color: rgb(245, 245, 245); background-image: -moz-linear-gradient(center top , rgb(245, 245, 245), rgb(241, 241, 241)); }
+.jfk-button-standard:hover { border: 1px solid rgb(198, 198, 198); color: rgb(51, 51, 51); background-color: rgb(248, 248, 248); background-image: -moz-linear-gradient(center top , rgb(248, 248, 248), rgb(241, 241, 241)); }
+.jfk-button-standard:active { box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3) inset; }
+.jfk-button-standard:focus { outline: medium none; border: 1px solid rgb(77, 144, 254); z-index: 4; }
+.jfk-button-standard.GJHURADEY { background: none repeat scroll 0% 0% rgb(255, 255, 255); border: 1px solid rgba(0, 0, 0, 0.05); color: rgb(184, 184, 184); }
+.GJHURADL3 { height: 4px; width: 7px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAG0lEQVR42mOIjIz8jwszgABOCRjAKYGsAJkPAKT/IKHcRfUJAAAAAElFTkSuQmCC") no-repeat scroll 0px 0px transparent; display: inline-block; margin-left: 7px; margin-bottom: 1px; opacity: 0.8; }
+.GJHURADM3:hover .GJHURADL3 { opacity: 1; }
+.goog-button-base { cursor: default; font: 0.846em/1 Arial,sans-serif; letter-spacing: normal; margin: 0px 1px; outline: medium none; text-align: center; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: nowrap; word-spacing: normal; }
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+.GJHURADG-D { color: rgb(119, 119, 119); text-align: center; padding: 4px; }
+.GJHURADF-D { color: rgb(5, 71, 192); }
+.GJHURADAYC { display: inline; white-space: nowrap; padding: 0px 2px; }
+.GJHURADOXC { color: rgb(238, 68, 68); font-size: 13px; }
+.GJHURADPXC { font-size: 13px; }
+.gux-confirm-panel-r1 { background-color: rgb(255, 238, 136); border-left: 1px solid rgb(255, 253, 240); border-right: 1px solid rgb(255, 253, 240); margin: 0px 1px; padding-top: 1px; }
+.gux-confirm-panel-r2 { background-color: rgb(255, 238, 136); border-left: 1px solid rgb(255, 253, 240); border-right: 1px solid rgb(255, 253, 240); padding-top: 1px; }
+.gux-confirm-panel-c { background-color: rgb(255, 238, 136); padding: 2px 15px; }
+.gux-confirm-panel-message { color: rgb(0, 0, 0); font-weight: bold; }
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+.GJHURADGFC { overflow: hidden; }
+.GJHURADNFC { border-bottom: 1px solid rgb(235, 235, 235); padding-top: 8px; padding-bottom: 8px; }
+.GJHURADKHC .GJHURADOFC { padding-right: 20px; }
+.GJHURADPFC { float: right; }
+.GJHURADKFC { white-space: nowrap; font-weight: normal; float: right; font-size: 13px; color: rgb(102, 102, 102); }
+.GJHURADMGC { margin-right: 16px; }
+.GJHURADMHC { font-weight: bold; }
+.GJHURADKJB.GJHURADEFC { border-top: 1px solid rgb(221, 221, 221); }
+.GJHURADKJB.GJHURADBFC { border-bottom: 1px solid rgb(221, 221, 221); }
+.GJHURADNGC, .GJHURADPGC { padding-bottom: 5px; min-width: 100%; }
+.GJHURADIHC { font-size: 18px; }
+.GJHURADLHC { font-size: 18px; background-color: rgb(235, 238, 248); }
+.GJHURADFHC { white-space: nowrap; }
+.GJHURADKHC .GJHURADFHC { display: inline-block; vertical-align: baseline; margin-top: 4px; }
+.GJHURADNHC { color: rgb(34, 0, 204); cursor: pointer; white-space: nowrap; display: inline-block; vertical-align: bottom; }
+.GJHURADKHC .GJHURADNHC { position: relative; top: 1px; }
+.GJHURADNHC img { opacity: 0.667; }
+.GJHURADNHC img:hover { opacity: 1; }
+.GJHURADIGC { width: 100%; }
+.GJHURADFFC { padding: 8px 16px; color: rgb(34, 0, 204); background-color: rgb(255, 238, 136); border: 1px solid rgb(188, 188, 188); position: absolute; bottom: 4px; right: 4px; }
+.GJHURADJFC { display: inline-block; vertical-align: top; overflow: hidden; padding-left: 8px ! important; }
+.GJHURADKHC .GJHURADJFC { position: relative; top: 1px; }
+.GJHURADIFC { text-align: right; padding-bottom: 10px; }
+.GJHURADJEC { text-align: center; }
+.GJHURADKOC { display: inline; white-space: nowrap; padding: 0px 2px; }
+.GJHURADJOC { color: rgb(238, 68, 68); font-size: 13px; }
+.GJHURADIOC { font-size: 13px; }
+.GJHURADKD .GJHURADMD { float: left; }
+.GJHURADKD .GJHURADND { float: right; }
+.GJHURADKD .GJHURADND td:last-child div { margin-right: 0px; }
+.GJHURADLD { line-height: 24px; margin-bottom: 14px; }
+.GJHURADBYC { color: rgb(102, 102, 102); }
+.GJHURADFYC { border-radius: 2px; height: 22px; }
+.GJHURADFYC > span { position: relative; top: -2px; }
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+.goog-inline-block { position: relative; display: inline-block; }
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+.GJHURADKJB { position: relative; border-top: 1px solid transparent; border-bottom: 1px solid transparent; border-left: 1px solid transparent; margin-right: 0px; padding-right: 0px; }
+.GJHURADJIB { margin-right: 0px; }
+.GJHURADLJB { border-left: 1px solid rgb(77, 144, 240); }
+.GJHURADLJB:focus { outline: medium none; }
+.GJHURADMJB { padding: 4px 0px; }
+.GJHURADCJB { width: 100%; }
+.GJHURADDJB { color: rgb(34, 34, 34); line-height: normal; }
+.GJHURADDJB p { line-height: normal; margin: 1em 0px; }
+.GJHURADJHB { width: 34px; padding: 5px; }
+.GJHURADIKB { border-bottom: 1px solid rgb(221, 221, 221); margin-bottom: 8px; }
+.GJHURADJKB { margin-bottom: 8px; }
+.GJHURADKGB { position: relative; padding: 4px 0px; }
+.GJHURADLGB { padding-left: 5px; margin-left: 39px; margin-right: 0px ! important; }
+.GJHURADIJB { font-size: 11px; float: right; line-height: 27px; }
+.GJHURADCJB td { vertical-align: top; }
+.GJHURADEJB { white-space: nowrap; }
+.GJHURADFJB { height: 1.5em; cursor: pointer; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; white-space: nowrap; overflow: hidden; padding-top: 6px ! important; }
+.GJHURADHJB { text-align: right; }
+.GJHURADCKB { color: rgb(136, 136, 136); height: 1.5em; overflow: hidden; line-height: 1.5em; }
+.GJHURADDKB { padding: 0px 4px; vertical-align: top; }
+.GJHURADGJB { border-bottom: 1px solid rgb(221, 221, 221); margin-bottom: 8px; padding-bottom: 8px; }
+.GJHURADNHB { font-weight: bold; }
+.GJHURADLHB { width: 15%; font-weight: bold; }
+.GJHURADKHB { width: 85%; }
+.GJHURADBIB .GJHURADEKB { float: left; margin: 0px 10px; }
+.GJHURADAIB .GJHURADEKB, .GJHURADBIB .GJHURADEKB { position: relative; top: -4px; }
+.GJHURADOGB { float: right; white-space: nowrap; margin-top: 5px ! important; }
+.GJHURADCHB { display: inline-block; white-space: nowrap; text-align: center; height: 27px; }
+.GJHURADPGB { padding: 0px; }
+.GJHURADEHB { min-width: 0px; width: 13px; height: 27px; margin-right: 0px; }
+.GJHURADEHB .GJHURADL3 { margin-left: 0px; }
+.GJHURADEIB { min-width: 34px; }
+.GJHURADPKB { color: rgb(136, 136, 136); }
+.GJHURADJ5D { padding-left: 5px; margin-left: 44px; }
+--></style><style><!--
+/* Effective stylesheet produced by snapshot save */
+.GJHURADA0B { font-weight: bold; white-space: nowrap; vertical-align: top; cursor: default; }
+--></style></head> +<body class="dragdrop-dropTarget dragdrop-boundary GJHURADEWC GJHURADJRC"><noscript>Chcete-li používat Diskuze Skupin Google, povolte v prohlížeči JavaScript a potom tuto stránku obnovte.</noscript> +<style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+--></style> +<script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script><xmp style="display:none"> +<plaintext/><xmp>.</xmp> +<div style="" id="__top_header"><div style="min-width: 750px;" class="gb_Nc gb_Db" id="gb"><div class="gb_Ub gb_Rc"><div style="min-width: 0px;" class="gb_7 gb_Rc gb_h gb_Qc"><div style="min-width: 0px;" class="gb_Bc gb_Rc gb_h"><div class="gb_F" id="gbsfw"></div><div class="gb_B gb_jb gb_h" id="gbwa"><div class="gb_Xa"><a class="gb_C gb_Sa" href="http://www.google.cz/intl/cs/options/" title="Služby" aria-haspopup="true" aria-expanded="false" data-ved="0CAIQvSc"></a><div class="gb_ja"></div><div class="gb_ia"></div></div><div class="gb_Wb gb_F gb_P" aria-label="Služby" role="region" aria-hidden="true" tabindex="0"><ul class="gb_I gb_z" aria-dropeffect="move"><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb119" href="https://plus.google.com/?gpsrc=ogpy0&tab=gX" target="_blank" data-pid="119" data-ved="0CAMQwS4oAA"><span class="gb_s" style="background-position:0 -1667px"></span><span class="gb_t">+Vy</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb1" href="https://www.google.cz/webhp?tab=gw&ei=hdKrVNGkI4OwggTej4KADw&ved=0CAQQqS4oAQ" target="_blank" data-pid="1"><span class="gb_s" style="background-position:0 -459px"></span><span class="gb_t">Vyhledávání</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb36" href="https://www.youtube.com/" target="_blank" data-pid="36" data-ved="0CAUQwS4oAg"><span class="gb_s" style="background-position:-17px -1011px"></span><span class="gb_t">YouTube</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb8" href="https://maps.google.cz/maps?hl=cs&tab=gl" target="_blank" data-pid="8" data-ved="0CAYQwS4oAw"><span class="gb_s" style="background-position:0 -69px"></span><span class="gb_t">Mapy</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb78" href="https://play.google.com/?hl=cs&tab=g8" target="_blank" data-pid="78" data-ved="0CAcQwS4oBA"><span class="gb_s" style="background-position:0 -528px"></span><span class="gb_t">Play</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb5" href="https://news.google.cz/nwshp?hl=cs&tab=gn&ei=hdKrVNGkI4OwggTej4KADw&ved=0CAgQqS4oBQ" target="_blank" data-pid="5"><span class="gb_s" style="background-position:-35px -1218px"></span><span class="gb_t">Zprávy</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb23" href="https://mail.google.com/mail/?tab=gm" target="_blank" data-pid="23" data-ved="0CAkQwS4oBg"><span class="gb_s" style="background-position:-35px -942px"></span><span class="gb_t">Gmail</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb49" href="https://drive.google.com/?tab=go" target="_blank" data-pid="49" data-ved="0CAoQwS4oBw"><span class="gb_s" style="background-position:0 -390px"></span><span class="gb_t">Disk</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb24" href="https://www.google.com/calendar?tab=gc" target="_blank" data-pid="24" data-ved="0CAsQwS4oCA"><span class="gb_s" style="background-position:-35px -735px"></span><span class="gb_t">Kalendář</span></a></li></ul><a aria-hidden="true" aria-expanded="false" class="gb_E gb_4b" target="_blank" href="http://www.google.cz/intl/cs/options/">Další</a><span class="gb_J"></span><ul aria-hidden="true" class="gb_I gb_A" aria-dropeffect="move"><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb51" href="https://translate.google.cz/?hl=cs&tab=gT" target="_blank" data-pid="51" data-ved="0CAwQwS4oCQ"><span class="gb_s" style="background-position:0 -873px"></span><span class="gb_t">Překladač</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb6" href="http://www.google.cz/shopping?hl=cs&tab=gf&ei=hdKrVNGkI4OwggTej4KADw&ved=0CA0QqS4oCg" target="_blank" data-pid="6"><span class="gb_s" style="background-position:0 -195px"></span><span class="gb_t">Nákupy</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb30" href="https://www.blogger.com/?tab=gj" target="_blank" data-pid="30" data-ved="0CA4QwS4oCw"><span class="gb_s" style="background-position:0 -1874px"></span><span class="gb_t">Blogger</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb31" href="https://plus.google.com/photos?tab=gq" target="_blank" data-pid="31" data-ved="0CA8QwS4oDA"><span class="gb_s" style="background-position:0 -1736px"></span><span class="gb_t">Fotky</span></a></li><li class="gb_o" aria-grabbed="false"><a class="gb_e" id="gb25" href="https://docs.google.com/document/?usp=docs_alc" target="_blank" data-pid="25" data-ved="0CBAQwS4oDQ"><span class="gb_s" style="background-position:0 0"></span><span class="gb_t">Docs</span></a></li></ul><a aria-hidden="true" class="gb_J gb_Xb" href="http://www.google.cz/intl/cs/options/" target="_blank">Ještě více od Googlu</a></div></div><div class="gb_Dc gb_h"><div class="gb_Xa"><a class="gb_8b gb_Z gb_X" id="gb_70" href="https://www.google.com/a/UniversalLogin?continue=https%3A%2F%2Fgroups.google.com%2Fd%2Fsearchin%2Fcomp.lang.python%2Frecieved%2420headers%2420email%2Fcomp.lang.python%2Fz0hyMjVUXpg%2FH-iZ2wvyGmAJ&hl=cs&service=groups2&hd=default" target="_top">Přihlásit se</a><div class="gb_ja"></div><div class="gb_ia"></div></div></div></div></div><div class="gb_Na gb_h gb_Ra" id="gbq1" style="max-width:204px;min-width:204px"><div class="gb_Oa"><a class="gb_Va gb_Qa" href="https://groups.google.com/d/overview" title="Skupiny Google" data-ved="0CBEQxC4"><span class="gb_Sa"></span></a></div></div><div class="gb_h gb_Cb"><div id="gbq"><div class="gbt" id="gbq2"><div id="gbqfw"><form class="gb_7b" action="" onsubmit="" target="" id="gbqf" name="gbqf" method="get" data-ved="0CBIQuyc"><fieldset class="gbxx"><legend class="gbxx">Skrytá pole</legend><div id="gbqffd"></div></fieldset><fieldset class="gbqff gb_h" id="gbqff"><legend class="gbxx">Vyhledat skupiny nebo zprávy</legend><div id="gbfwa" class="gbqfwa "><div id="gbqfqw" class="gbqfqw"><div id="gbqfaa"></div><div style="left: 0px; right: 19px;" id="gbqfqwb" class="gbqfqwb"><input aria-label="Hledat témata" id="gbqfq" class="gwt-SuggestBox GJHURADGSC" name="q" autocomplete="off" placeholder="Hledat témata" type="text"></div><div id="gbqfab"><div style="" class="GJHURADAPC" title="Zobrazit možnosti vyhledávání" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><img class="gwt-Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAG0lEQVR42mOIjIz8jwszgABOCRjAKYGsAJkPAKT/IKHcRfUJAAAAAElFTkSuQmCC" height="4" width="7"></div></div></div></div></fieldset><div class="gb_h gb_6b" id="gbqfbw"><button tabindex="0" class="gbqfb" aria-label="Hledat Googlem" name="" id="gbqfb"><span class="gbqfi gb_Sa"></span></button></div></form></div></div></div></div></div><div id="gbw"></div></div><div id="gba"></div> +<div style="clear:both"></div></div><iframe tabindex="-1" style="position: absolute; width: 0px; height: 0px; border: medium none; left: -1000px; top: -1000px;" id="standalone" srcdoc='<!DOCTYPE html> +<html><head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body></body></html>'></iframe><div aria-hidden="true" style="display: none;"></div><div aria-hidden="true" style="display: none;"></div><div class="GJHURADO5B"><div class="GJHURADLPC"></div> <div aria-hidden="true" style="display: none;" class="GJHURADAQC"></div> <div></div> <div class="GJHURADJPC"> <h2 id="groups-banner-link" class="GJHURADKPC"> <a href="#%21overview" class="gwt-Anchor GJHURADD3">Skupiny</a> </h2> <div style="margin-left: 204px;" class="GJHURADIPC GJHURADJ4B GJHURADB4B"><div style="margin-right: 175px;" class="GJHURADP3B"><div class="GJHURADKD"><table class="GJHURADLD GJHURADMD" cellpadding="0" cellspacing="0"><tbody><tr><td style="vertical-align: top;" align="left"><div aria-label="« Zpět na: výsledky hledání" data-title="« Zpět na: výsledky hledání" id="b_forum" style="" class="GJHURADDY jfk-button-standard" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAg0lEQVR42mNgGAVDDsynlkECQLwfiP9TwzADFhaWS1DDKDbQgZmZ+ROSYRQZmIBmECkYEyQnJ8+mqoH///+PP3DgwH8BAQEUxfgAwWABqrE/e/bsJwMDA2LDkLAaoKH6b9++veTg4EAdA6GG8gPx/oSEhP8E1MG8ThwAqp0/WljQHwAAzll8fwxwh2QAAAAASUVORK5CYII=" height="20" width="20"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div></td><td style="vertical-align: top;" align="left"><div aria-label="Aktualizovat" data-title="Aktualizovat" class="GJHURADDY jfk-button-standard" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAfElEQVR42mNgGAU4gAMQrwfi/2h4PVSOZDAfi2HoOAFJLUHQj+YqAyQ5AzQL90Npgl5Gdwk2UIDmarxgPZILcQEBID5PiqEwRQYkGEi0oVQFNDXUgAi1AdSMKBiAJafztEhSAaTmJmyJHznrziclbPuJyKbzB0WBMgrIBwA0h1NrVQiSKQAAAABJRU5ErkJggg==" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div></td><td style="vertical-align: top;" align="left"><span aria-hidden="true" style="display: none;"></span></td></tr></tbody></table><table class="GJHURADLD GJHURADND" cellpadding="0" cellspacing="0"><tbody><tr><td style="vertical-align: top;" align="left"><div style="" class="GJHURADKFC"><span class="GJHURADMGC"> <span>2</span> z <span>73</span> <span class="GJHURADMHC" style="display:none;">(<span></span>)</span> </span> <div aria-label="Předchozí: Add &quot;<b>Received</b>:&quot; header to <b>email</b> msg in correct position?" data-title="Předchozí: Add &quot;<b>Received</b>:&quot; header to <b>email</b> msg in correct position?" aria-disabled="false" class="GJHURADDY jfk-button-standard GJHURADKY GJHURADIY" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAPklEQVR42mNgGAUDDQyA+D6UppqB74H4P9Rgqhr4nhouHYEGMkAj4z8UJ9Aitt/TKhmNGkzdHEWzvD8KiAMADwElnjD/qFAAAAAASUVORK5CYII=" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div><div aria-label="Další: The <b>email</b> package and KLEZ mails." data-title="Další: The <b>email</b> package and KLEZ mails." aria-disabled="false" class="GJHURADDY jfk-button-standard GJHURADKY GJHURADLY" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAO0lEQVR42mNgGAX0BgZAfB9KUw2ADPwPxO+pabAB1MBRg2lncALU0P/QSBx8Lh2BBtI0R1E9748C0gEA4Rolnov8+TgAAAAASUVORK5CYII=" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div></div></td></tr></tbody></table></div></div><div class="GJHURADF5B GJHURADLD"><div><div aria-label="Moje nastavení" data-title="Moje nastavení" id="user_settings_menu" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAANCAYAAABLjFUnAAABT0lEQVR42mNgQAKhoaFs3Nzcz4DM/0j4NxCLMpAKdHR0NqMZBMP7sFj6DyTHzMwcgdUwJSWl7zgMA2EGfX39DDExsZOSkpK3GBkZweIcHBwfZWRk9goKCi5EMUxbW/srDoOegOSFhYW/wcSALrsoIiKyjZWV9S+yhXAQEBAwAYdh3iB5oAvA8pycnGdgenR1dStAYmxsbDcZ0MPCzc1tFtDGXyAFLCwsX4Bh4guTt7OziweJA720Hibm7u4eBRITEBDYSFIEwbwJ8pqhoWGzl5dXhpycHCxo/pFq2Dwg9RcY+H+QgwHI/8nExPQOrMjBwYHF398/xMbGZjMwXD6ys7ODox2o4B/Q+c/k5eV7jY2NWYFiLEAsws/Prwh0HUxNN0ycwc/Pz1BNTe0NniQBx8AwvIrk0BwgbgBiDbgI0M8fiTEICb/CFxT/ycC0NwwAW7yafp8zvxQAAAAASUVORK5CYII=" height="13" width="19"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div><div aria-label="Nastavení" data-title="Nastavení" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAjklEQVR42mNgGE5gPRD/R8L91DB0P5qh+0k1QACIHaA0CBQA8Xs0Q99DxbGpxwrmI2m8j2YYOr6PZOF8XAY6EDCEEHYgJkJgGCSuAFWjQEAdBgjAEn7riUwR76H6sQIDNMUKONQpoKkzwBdR6IrxAWLVUd+lNAlTmsQ+TdIpTXIUzfI+TUopYiJw/vCpKgBlrpnVdquk/AAAAABJRU5ErkJggg==" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div></div></div></div> </div> <div class="GJHURADG5B"> <div style="width: 180px;" class="GJHURADE5B GJHURADPSC" role="navigation"> <div class="GJHURADJ5B"><div class="GJHURADG4B"> <div class="GJHURADF4B"><span class="GJHURADFRC GJHURADE4B"></span></div> </div> <div class="GJHURADL5B"></div></div> <div><div class="GJHURADGQC" style="position: relative;"><div style="overflow: hidden;"><div style="position: relative;"><div id="nt-c" style="height: 491px;" class="GJHURADI0C"><div class="GJHURADJ0C"> <div class="GJHURADN-C"><div class="GJHURADN-C" aria-label="Skupiny Google" role="menubar" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><div role="menuitem" title="Domovská stránka" id="gwt-uid-11" class="GJHURADN0C"><a tabindex="-1" href="#%21overview" class="gwt-Anchor GJHURADD3"><span>Domovská stránka</span> <span class="GJHURADJID" style="display:none;"></span> <span class="GJHURADASC" style="display:none"></span></a></div></div></div><div aria-hidden="true" style="display: none;" class="GJHURADC0C GJHURADD0C"><div class="gwt-Label">Pokud chcete přidat k uloženým vyhledáváním předdefinovaná vyhledávání, importujte je.</div></div></div> <div class="GJHURADM-C"></div> <div class="GJHURADH0C GJHURADD-C" role="tree"><div style="" class="GJHURADC0C GJHURADD0C"><div class="gwt-Label dragdrop-dropTarget">Kliknutím na ikonu hvězdičky přidáte skupinu k oblíbeným</div></div></div> <div class="GJHURADM-C"></div> <div aria-hidden="true" style="display: none;" class="GJHURADH0C" role="tree"></div> <div class="GJHURADH0C" role="tree"><div style="" class="GJHURADE-C"><div aria-expanded="false" role="treeitem" class="GJHURADH-C" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div class="GJHURADH-C GJHURADE0C"><div class="GJHURADF-C"></div><div class="GJHURADO0C" tabindex="-1"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><span class="GJHURADFRC"></span></div></div><a class="GJHURADB0C"><span aria-hidden="true" class="GJHURADP-C" style="display:none">0</span> <span class="GJHURADG-C GJHURADK-C"></span> <span class="GJHURADA0C"> <h3 class="GJHURADA0C">Nedávno zobrazené</h3> </span></a><div role="button" class="GJHURADG0C GJHURADL-C" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><a class="GJHURADF0C"><div></div></a></div></div></div><div class="GJHURADM0C" role="tree"><div title="comp.lang.python" aria-expanded="false" role="treeitem" id="gwt-uid-113" class="GJHURADO-C GJHURADE0C dragdrop-draggable GJHURADKUC"><a tabindex="-1" href="#%21forum/comp.lang.python" class="GJHURADB0C dragdrop-handle"><span aria-hidden="true" class="GJHURADP-C" style="display:none;">0</span> <span class="GJHURADA0C"> <span>comp.lang.python</span> </span></a></div></div></div></div> <div class="GJHURADH0C" role="tree"><div aria-hidden="true" style="display: none;" class="GJHURADE-C"><div aria-expanded="false" role="treeitem" class="GJHURADH-C" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div class="GJHURADH-C GJHURADE0C"><div class="GJHURADF-C"></div><div class="GJHURADO0C" tabindex="-1"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><span class="GJHURADFRC"></span></div></div><a class="GJHURADB0C"><span aria-hidden="true" class="GJHURADP-C" style="display:none">0</span> <span class="GJHURADG-C GJHURADK-C"></span> <span class="GJHURADA0C"> <h3 class="GJHURADA0C">Nedávná vyhledávání</h3> </span></a><div role="button" class="GJHURADG0C GJHURADL-C" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><a class="GJHURADF0C"><div></div></a></div></div></div><div class="GJHURADM0C" role="tree"></div></div></div> <div class="GJHURADH0C" role="tree"><div aria-hidden="true" style="display: none;" class="GJHURADE-C"><div aria-expanded="false" role="treeitem" class="GJHURADH-C" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div class="GJHURADH-C GJHURADE0C"><div class="GJHURADF-C"></div><div class="GJHURADO0C" tabindex="-1"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><span class="GJHURADFRC"></span></div></div><a class="GJHURADB0C"><span aria-hidden="true" class="GJHURADP-C" style="display:none">0</span> <span class="GJHURADG-C GJHURADK-C"></span> <span class="GJHURADA0C"> <h3 class="GJHURADA0C">S nedávnými příspěvky</h3> </span></a><div role="button" class="GJHURADG0C GJHURADL-C" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><a class="GJHURADF0C"><div></div></a></div></div></div><div class="GJHURADM0C" role="tree"></div></div></div> <div aria-hidden="true" style="display: none;" class="GJHURADC0C"><div><a href="https://www.google.com/a/UniversalLogin?continue=https%3A%2F%2Fgroups.google.com%2Fd%2Fsearchin%2Fcomp.lang.python%2Frecieved%2420headers%2420email%2Fcomp.lang.python%2Fz0hyMjVUXpg%2FH-iZ2wvyGmAJ&hl=cs&service=groups2&hd=default" class="gwt-Anchor">Přihlaste se</a>, nebo začněte procházet své skupiny, abyste je uspořádali a zobrazili si poslední položky.</div></div> </div> <div style="" class="GJHURADJ-C"><a href="http://www.google.com/intl/cs/policies/privacy/">Ochrana soukromí</a> <nomsg> - </nomsg> <a href="http://www.google.com/intl/cs/policies/terms/">Smluvní podmínky</a></div></div></div><div class="GJHURADGYC"></div></div></div><div aria-hidden="true" style="display: none;"></div></div> </div> <div class="GJHURADL4B"> <div class="GJHURADF4B"><span class="GJHURADFRC GJHURADK4B"></span></div> </div> <div style="margin-left: 204px;" class="GJHURADJ4B GJHURADC4B" role="main"> <div class="GJHURADIQC"> <div class="GJHURADP5B"><div class="GJHURADGFC GJHURADKHC"> <div style="height: 491px;" class="GJHURADIGC"><div role="list" class="GJHURADHUC"><div style="position: relative;"><div class="GJHURADKQC" style="overflow: auto; height: 491px;"><div style="position: relative;"><div style="height: 1px;" class="GJHURADLQC"><div><div id="t-h" style=""><div aria-hidden="true" style="display: none;" class="GJHURADG-D"><div><span class="gwt-InlineLabel"></span> <a class="GJHURADOTC GJHURADF-D"></a> <a class="GJHURADOTC GJHURADF-D"></a></div> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel"></span></div> <table class="GJHURADNFC" style="" width="100%" cellpadding="0" cellspacing="0"> <tbody> <tr> <td colspan="2"> <div style=""><span><a href="#%21forum/comp.lang.python">comp.lang.python</a> › </span></div> </td> </tr> <tr> <td colspan="2"> <div aria-hidden="true" style="display: none;" class="gux-confirm-panel GJHURADJEC"><div class="gux-confirm-panel-r1"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-c"><div><span class="gwt-InlineLabel gux-confirm-panel-message">Do tohoto tématu již kvůli nečinnosti není možné přidávat nové odpovědi. Pokud chcete přidat zprávu, vyhledejte výše novější téma nebo publikujte novou otázku.</span></div></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-r1"></div></div> </td> </tr> <tr> <td> <div class="GJHURADOFC"> <span id="t-t" class="GJHURADIHC">HOWTO: Parsing email using Python part1</span> <span aria-label="Zamčeno" class="GJHURADCTC" aria-hidden="true" style="display: none;"></span> <span aria-hidden="true" class="GJHURADLHC" style="display:none;"></span> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel GJHURADHVC GJHURADMSC"></span> <div id="l_another_discussion" aria-hidden="true" style="display: none;" class="GJHURADAYC"><span class="GJHURADOXC"> Toto téma je duplicitní k jiné diskusi. </span> <span class="GJHURADPXC"> <a href="javascript:void(0);" class="gwt-Anchor GJHURADD3"></a> </span></div> <div aria-hidden="true" style="display: none;" class="GJHURADKOC"><span class="GJHURADJOC"> Byli jste sem přesměrováni z duplicitního tématu. </span> <span class="GJHURADIOC"> <a href="javascript:void(0);" class="gwt-Anchor GJHURADD3"></a> </span></div> <span style="display:none;"></span> </div> <div class="GJHURADOFC"> <div class="GJHURADFHC GJHURADJUC" style="">Příspěvky: 3, autoři: 3</div> <span class="GJHURADNHC" style=""> <div aria-pressed="false" id="options_menu" aria-label="Možnosti tématu" role="button" class="goog-button-base goog-inline-block goog-button" tabindex="0"><img class="gwt-Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAABAUlEQVR42pVSywqCUBB1GfQB7YL+qYgWki/8ATcuXPkJ/kUboRZFq5YVlm3rEwQhMiik6HaOIFy0wg6Mlzl3zjh3ZhRFgq7rfdM0D4Zh3GEP2JU++KFShWVZHQRMXdeNkyQ5CQn0Pc+LIJwhrlcIVFVtQzAJw3AlfoD3TKxpWosljZBpLxqAcSh3TNG6WtI3MA5/2yr4XEoyCAIBv2bkS8A/U/QqiTzPa0L65CXRk6JcLiHLMuE4TiHgSV8G+BtFtTanaSp83y/Oj29CN1R0ZdewezHiB8WsoJ7/NSfCtu0uiCXngBKOHzYixv2itkrMwB3D5QaWsUscByziE7g5ZewbzQ7OUxr+cUAAAAAASUVORK5CYII=" height="13" width="13"></div> </span> <div style="text-indent: 0px; margin: 0px; padding: 0px; background: none repeat scroll 0% 0% transparent; border-style: none; float: none; line-height: normal; font-size: 1px; vertical-align: baseline; display: inline-block; width: 24px; height: 15px;" class="GJHURADJFC" id="po-1"><iframe title="+1" data-gapiattached="true" src="index_files/fastbutton.html#_methods=onPlusOne%2C_ready%2C_close%2C_open%2C_resizeMe%2C_renderstart%2Concircled%2Cdrefresh%2Cerefresh&id=I0_1420546696071&parent=https%3A%2F%2Fgroups.google.com&pfname=&rpctoken=16961908" name="I0_1420546696071" id="I0_1420546696071" vspace="0" tabindex="0" style="position: static; top: 0px; width: 24px; margin: 0px; border-style: none; left: 0px; visibility: visible; height: 15px;" scrolling="no" marginwidth="0" marginheight="0" hspace="0" frameborder="0" width="100%"></iframe></div> <span class="GJHURADPFC"><div aria-hidden="true" style="display: none;"><span class="GJHURADBYC">Předchozí</span> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Předchozí</a> <div aria-pressed="false" aria-disabled="true" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3 GJHURADFYC GJHURADJY GJHURADDY-disabled GJHURADEY" role="button" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span>Stránka <b>1</b></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div> <span class="GJHURADBYC">Další</span> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Další</a></div></span> </div> </td> </tr> </tbody> </table> <table aria-hidden="true" style="display: none;" class="GJHURADNFC" width="100%" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="GJHURADMEC" style="display:none;"> </div> </td> </tr> </tbody> </table> <div style="display:none;"> </div> <span class="GJHURADDQC" id="l_escalation_topic" aria-hidden="true" style="display: none;"><div class="gux-confirm-panel"><div class="gux-confirm-panel-r1"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-c"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-r1"></div></div></span> <span class="GJHURADDQC" id="t_moved_topic" aria-hidden="true" style="display: none;"><div class="gux-confirm-panel"><div class="gux-confirm-panel-r1"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-c"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-r1"></div></div></span></div></div><div id="tm-tl" class="GJHURADNGC"><div class="GJHURADKJB GJHURADMJB GJHURADKUC GJHURADLJB" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div class="GJHURADKJB"><div class="GJHURADJIB"><div class="GJHURADBIB"><div tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><table class="GJHURADCJB" cellpadding="0" cellspacing="0"> <tbody><tr> <td class="GJHURADJHB" valign="top"> <div aria-label="Profilová fotka uživatele aspineux"><img style="width: 34px; height: 34px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAnUlEQVR42u3UsQ2AIBAFUOemoKGESajYhA3oWABCfeabUKiFNijRX3xDzkt4ILLknGWGLHi01l4NIYQQQsirkFKKhBDEGLMFY9Qeh2BipdQuqD0OwS4cIaj9FzLNp5nmsPIe6am1SoxRvPfinBOt9RaMUcM79AyFpJTEWns6pMegB73DIFj1FaIHvcMgdxE934fw9yWEEEIIuQuZISuz4exV/fiHnwAAAABJRU5ErkJggg==" class="gwt-Image" height="34" width="34"></div></td> <td class="GJHURADFJB" align="left" valign="top"> <span class="_username"><span style="color: rgb(34, 34, 34);" class="GJHURADA0B">aspineux</span></span> <span aria-hidden="true" style="display: none;" class="GJHURADASC"></span> <span></span> </td> <td align="right" valign="top"> <div class="GJHURADOGB"><div aria-label="Přihlásit se a odpovědět" aria-disabled="false" class="GJHURADDY jfk-button-standard GJHURADIY GJHURADCHB GJHURADEIB" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAdklEQVR42mNgGAVDHswnwCfLwP94+CSDBqgBCWh8sg1NgGruR+PD8HogLgBiBVINXI/DQHQ8nxjDYYoV0Pj48HsgNqCmS0k2GFeY7ofi+2ji94kNW1js9+OIfQGomvto6qmSTgWgQXae2jlKgJggIDeNjwIaAQBDo0wVdvRN2QAAAABJRU5ErkJggg==" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div><span class="GJHURADCHB GJHURADPGB"><div id="b_action_H-iZ2wvyGmAJ" aria-label="Další akce zpráv" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3 GJHURADEHB GJHURADLY GJHURADKY" role="button" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div></span></div> <div class="GJHURADFJB GJHURADHJB"> <span title="neděle, 3. července 2011 13:51:50 UTC+2" class="GJHURADEJB GJHURADJUC">03.07.11</span> </div> </td> </tr> </tbody></table></div></div> <div aria-hidden="true" style="display: none;" class="GJHURADEKB"></div> <div class="GJHURADJ5D"><div class="GJHURADGJB" style="display:none;"> <div class="GJHURADNHB" style="display:none;"></div> <div style="display:none;"> <span class="GJHURADLHB"> Další příjemci: </span> <span class="GJHURADKHB"> <span></span> </span> </div> </div> <div style=""><div><div class="GJHURADJKB"><div class="gux-confirm-panel-r1"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-c"><div><a style="" class="GJHURADATC">Přeložit zprávu do jazyka: čeština +</a> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel">Překládá se...</span> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel">Přeloženo pomocí Google – angličtina ≫ čeština - </span> <a aria-hidden="true" style="display: none;" class="GJHURADATC">Zobrazit původní</a> </div></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-r1"></div></div></div></div> <div aria-hidden="true" class="GJHURADCKB GJHURADIKB" style="display:none;"> <span class="GJHURADDKB">Hi I have written an article about parsing email using Python. The article is at http://blog.magiksys.net/Parsing-email-using-python-header and the full content is here. Hope this help someone. Regards. A lot of programs and libraries commonly used</span> </div> <div class="GJHURADDJB" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><div style="overflow: auto">Hi<br>I have written an article about parsing email using Python.<br>The article is at <a href="http://blog.magiksys.net/Parsing-email-using-python-header" target="_blank" onmousedown="" onclick="">http://blog.magiksys.net/<wbr>Parsing-email-using-python-<wbr>header</wbr></wbr></a><br>and the full content is here.<p>Hope this help someone.</p><p>Regards.</p><p><br>A lot of programs and libraries commonly used to send emails<br>don't comply with RFC. Ignore such kind of email is not an option<br>because all<br>mails are important. It is important to do it best when parsing<br>emails, like<br>does most popular MUA.</p><p>Python's has one of the best library to parse emails: the<br>email package.<br>First part, how to decode mails header</p><p>Regarding RFC 2047<br>non ascii text in the header must be encoded.<br>RFC 2822 make the difference<br>between different kind of header. *text field like<br>Subject: or address fields like<br>To:, each with different encoding rules.<br>This is because RFC 822<br>forbids the use of some ascii characters at some place because<br>they have some meaning, but these ascii characters can be used when<br>they are encoded<br>because the encoded version don't disturb the parsing of string.</p><p>Python provides email.Header.decode_header() for decoding header.<br>The function decode each atom and return a list of tuples<br>( text, encoding ) that you still have to decode and join to get<br>the full text. This is done in my getmailheader() function.</p><p>For addresses, Python provides email.utils.getaddresses()<br>that split addresses in a list of tuple ( display-name, address ).<br>display-name need to be decoded too and addresses must match<br>the RFC2822 syntax. The function getmailaddresses() does<br>all the job.</p><p>Here are the functions in actions.</p><p>import re<br>import email<br>from email.Utils import parseaddr<br>from email.Header import decode_header</p><p># email address REGEX matching the RFC 2822 spec<br># from perlfaq9<br># my $atom = qr{[a-zA-Z0-9_!#\$\%&'*+/=?\^`<wbr>{}~|\-]+};<br># my $dot_atom = qr{$atom(?:\.$atom)*};<br># my $quoted = qr{"(?:\\[^\r\n]|[^\\"])*"};<br># my $local = qr{(?:$dot_atom|$quoted)};<br># my $domain_lit = qr{\[(?:\\\S|[\x21-\x5a\x5e-\<wbr>x7e])*\]};<br># my $domain = qr{(?:$dot_atom|$domain_lit)};<br># my $addr_spec = qr{$local\@$domain};<br>#<br># Python translation</wbr></wbr></p><p>atom_rfc2822=r"[a-zA-Z0-9_!#\$<wbr>\%&'*+/=?\^`{}~|\-]+"<br>atom_posfix_restricted=r"[a-<wbr>zA-Z0-9_#\$&'*+/=?\^`{}~|\-]+" # without<br>'!' and '%'<br>atom=atom_rfc2822<br>dot_atom=atom + r"(?:\." + atom + ")*"<br>quoted=r'"(?:\\[^\r\n]|[^\\"])<wbr>*"'<br>local="(?:" + dot_atom + "|" + quoted + ")"<br>domain_lit=r"\[(?:\\\S|[\x21-\<wbr>x5a\x5e-\x7e])*\]"<br>domain="(?:" + dot_atom + "|" + domain_lit + ")"<br>addr_spec=local + "\@" + domain</wbr></wbr></wbr></wbr></p><p>email_address_re=re.compile('^<wbr>'+addr_spec+'$')</wbr></p><p>raw="""MIME-Version: 1.0<br>Received: by 10.229.233.76 with HTTP; Sat, 2 Jul 2011 04:30:31 -0700<br>(PDT)<br>Date: Sat, 2 Jul 2011 13:30:31 +0200<br>Delivered-To: <a href="javascript:void(0);" target="_blank" gdf-obfuscated-mailto="H-iZ2wvyGmAJ" onmousedown="" onclick="">alain....@gmail.com</a><br>Message-ID: <CAAJL_=kPAJZ=fryb21wBOALp8-<wbr>XOEL-<br><a href="javascript:void(0);" target="_blank" gdf-obfuscated-mailto="H-iZ2wvyGmAJ" onmousedown="" onclick="">h9j84s3Sj...@mail.<wbr>gmail.com</wbr></a>><br>Subject: =?ISO-8859-1?Q?Dr.=<wbr>20Pointcarr=E9?=<br>From: Alain Spineux <<a href="javascript:void(0);" target="_blank" gdf-obfuscated-mailto="H-iZ2wvyGmAJ" onmousedown="" onclick="">alain....@gmail.com</a>><br>To: =?ISO-8859-1?Q?Dr=2E_<wbr>Pointcarr=E9?= <<a href="javascript:void(0);" target="_blank" gdf-obfuscated-mailto="H-iZ2wvyGmAJ" onmousedown="" onclick="">alain....@gmail.com</a>><br>Content-Type: multipart/alternative;<br>boundary=<wbr>000e0cd68f223dea3904a714768b</wbr></wbr></wbr></wbr></p><p>--000e0cd68f223dea3904a714768b<br>Content-Type: text/plain; charset=ISO-8859-1</p><p>--<br>Alain Spineux</p><p>--000e0cd68f223dea3904a714768b<br>Content-Type: text/html; charset=ISO-8859-1</p><p></p><p>--<br>Alain Spineux</p><p><br>--<wbr>000e0cd68f223dea3904a714768b--<br>"""</wbr></p><p>def getmailheader(header_text, default="ascii"):<br> """Decode header_text if needed"""<br> try:<br> headers=decode_header(header_<wbr>text)<br> except email.Errors.HeaderParseError:<br> # This already append in email.base64mime.decode()<br> # instead return a sanitized ascii string<br> return header_text.encode('ascii', 'replace').decode('ascii')<br> else:<br> for i, (text, charset) in enumerate(headers):<br> try:<br> headers[i]=unicode(text, charset or default,<br>errors='replace')<br> except LookupError:<br> # if the charset is unknown, force default<br> headers[i]=unicode(text, default, errors='replace')<br> return u"".join(headers)</wbr></p><p>def getmailaddresses(msg, name):<br> """retrieve From:, To: and Cc: addresses"""<br> addrs=email.utils.<wbr>getaddresses(msg.get_all(name, []))<br> for i, (name, addr) in enumerate(addrs):<br> if not name and addr:<br> # only one string! Is it the address or is it the name ?<br> # use the same for both and see later<br> name=addr</wbr></p><p> try:<br> # address must be ascii only<br> addr=addr.encode('ascii')<br> except UnicodeError:<br> addr=''<br> else:<br> # address must match adress regex<br> if not email_address_re.match(addr):<br> addr=''<br> addrs[i]=(getmailheader(name), addr)<br> return addrs</p><p>msg=email.message_from_string(<wbr>raw)<br>subject=getmailheader(msg.get(<wbr>'Subject', ''))<br>from_=getmailaddresses(msg, 'from')<br>from_=('', '') if not from_ else from_[0]<br>tos=getmailaddresses(msg, 'to')</wbr></wbr></p><p>print 'Subject: %r' % subject<br>print 'From: %r' % (from_, )<br>print 'To: %r' % (tos, )</p><p>And the ouput:</p><p>Subject: u'Dr. Pointcarr\xe9'<br>From: (u'Alain Spineux', '<a href="javascript:void(0);" target="_blank" gdf-obfuscated-mailto="H-iZ2wvyGmAJ" onmousedown="" onclick="">alain....@gmail.com</a>')<br>To: [(u'Dr. Pointcarr\xe9', '<a href="javascript:void(0);" target="_blank" gdf-obfuscated-mailto="H-iZ2wvyGmAJ" onmousedown="" onclick="">alain....@gmail.com</a>')]<br></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p></div></div></div> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Zobrazit oříznutý obsah</a> <div aria-hidden="true" class="GJHURADDJB" style="display:none;"><div></div></div> <div></div> <div></div> <div style="display:none;"></div> <div style="display:none;"></div> <div style="display:none;"></div></div> <div style=""><div class="GJHURADJ5D"></div></div> <div class="GJHURADLGB"> <div class="GJHURADKGB GJHURADAKB" style=""> <div> <div style="display:inline-block;"> <div style="display:none;"></div> </div> <div style="display:none;"></div> <span aria-hidden="true" style="display: none;" class="GJHURADATC GJHURADOTC GJHURADIJB"></span> </div> </div> <div aria-hidden="true" style="display: none;" class="GJHURADFHB"></div> <div class="GJHURADKGB" style="display:none;"> <div></div> </div> </div></div></div></div></div><div class="GJHURADKJB GJHURADEFC GJHURADMJB" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div class="GJHURADKJB"><div class="GJHURADJIB"><div class="GJHURADBIB"><div tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><table class="GJHURADCJB" cellpadding="0" cellspacing="0"> <tbody><tr> <td class="GJHURADJHB" valign="top"> <div aria-label="Profilová fotka uživatele pyt...@bdurham.com"><img style="width: 34px; height: 34px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAnUlEQVR42u3UsQ2AIBAFUOemoKGESajYhA3oWABCfeabUKiFNijRX3xDzkt4ILLknGWGLHi01l4NIYQQQsirkFKKhBDEGLMFY9Qeh2BipdQuqD0OwS4cIaj9FzLNp5nmsPIe6am1SoxRvPfinBOt9RaMUcM79AyFpJTEWns6pMegB73DIFj1FaIHvcMgdxE934fw9yWEEEIIuQuZISuz4exV/fiHnwAAAABJRU5ErkJggg==" class="gwt-Image" height="34" width="34"></div></td> <td class="GJHURADFJB" align="left" valign="top"> <span class="_username"><span style="color: rgb(34, 34, 34);" class="GJHURADA0B">pyt...@bdurham.com</span></span> <span aria-hidden="true" style="display: none;" class="GJHURADASC"></span> <span></span> </td> <td align="right" valign="top"> <div class="GJHURADOGB"><div aria-label="Přihlásit se a odpovědět" aria-disabled="false" class="GJHURADDY jfk-button-standard GJHURADIY GJHURADCHB GJHURADEIB" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAdklEQVR42mNgGAVDHswnwCfLwP94+CSDBqgBCWh8sg1NgGruR+PD8HogLgBiBVINXI/DQHQ8nxjDYYoV0Pj48HsgNqCmS0k2GFeY7ofi+2ji94kNW1js9+OIfQGomvto6qmSTgWgQXae2jlKgJggIDeNjwIaAQBDo0wVdvRN2QAAAABJRU5ErkJggg==" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div><span class="GJHURADCHB GJHURADPGB"><div id="b_action_vtPVM366usMJ" aria-label="Další akce zpráv" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3 GJHURADEHB GJHURADLY GJHURADKY" role="button" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div></span></div> <div class="GJHURADFJB GJHURADHJB"> <span title="neděle, 3. července 2011 15:18:23 UTC+2" class="GJHURADEJB GJHURADJUC">03.07.11</span> </div> </td> </tr> </tbody></table></div></div> <div aria-hidden="true" style="display: none;" class="GJHURADEKB"></div> <div class="GJHURADJ5D"><div class="GJHURADGJB" style=""> <div class="GJHURADNHB" style="display:none;"></div> <div style=""> <span class="GJHURADLHB"> Další příjemci: </span> <span class="GJHURADKHB"> <span>aspi...@gmail.com, pytho...@python.org</span> </span> </div> </div> <div style=""><div><div class="GJHURADJKB"><div class="gux-confirm-panel-r1"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-c"><div><a style="" class="GJHURADATC">Přeložit zprávu do jazyka: čeština +</a> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel">Překládá se...</span> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel">Přeloženo pomocí Google – angličtina ≫ čeština - </span> <a aria-hidden="true" style="display: none;" class="GJHURADATC">Zobrazit původní</a> </div></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-r1"></div></div></div></div> <div aria-hidden="true" class="GJHURADCKB GJHURADIKB" style="display:none;"> <span class="GJHURADDKB">Alain,</span> </div> <div class="GJHURADDJB" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><div style="overflow: auto">Alain,<p></p><div class="GJHURADPKB">> I have written an article about parsing email using Python. The article is at <a href="http://blog.magiksys.net/Parsing-email-using-python-header" target="_blank" onmousedown="" onclick="">http://blog.magiksys.net/<wbr>Parsing-email-using-python-<wbr>header</wbr></wbr></a><br>and the full content is here.</div><p>Very helpful - thank you!</p><p>Regards,<br>Malcolm<br></p><p></p><p></p></div></div></div> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Zobrazit oříznutý obsah</a> <div aria-hidden="true" class="GJHURADDJB" style="display:none;"><div></div></div> <div></div> <div></div> <div style="display:none;"></div> <div style="display:none;"></div> <div style="display:none;"></div></div> <div style=""><div class="GJHURADJ5D"></div></div> <div class="GJHURADLGB"> <div class="GJHURADKGB GJHURADAKB" style=""> <div> <div style="display:inline-block;"> <div style="display:none;"></div> </div> <div style="display:none;"></div> <span aria-hidden="true" style="display: none;" class="GJHURADATC GJHURADOTC GJHURADIJB"></span> </div> </div> <div aria-hidden="true" style="display: none;" class="GJHURADFHB"></div> <div class="GJHURADKGB" style="display:none;"> <div></div> </div> </div></div></div></div></div><div class="GJHURADKJB GJHURADEFC GJHURADBFC GJHURADMJB" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div class="GJHURADKJB"><div class="GJHURADJIB"><div class="GJHURADBIB"><div tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><table class="GJHURADCJB" cellpadding="0" cellspacing="0"> <tbody><tr> <td class="GJHURADJHB" valign="top"> <div aria-label="Profilová fotka uživatele TheSaint"><img style="width: 34px; height: 34px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAnUlEQVR42u3UsQ2AIBAFUOemoKGESajYhA3oWABCfeabUKiFNijRX3xDzkt4ILLknGWGLHi01l4NIYQQQsirkFKKhBDEGLMFY9Qeh2BipdQuqD0OwS4cIaj9FzLNp5nmsPIe6am1SoxRvPfinBOt9RaMUcM79AyFpJTEWns6pMegB73DIFj1FaIHvcMgdxE934fw9yWEEEIIuQuZISuz4exV/fiHnwAAAABJRU5ErkJggg==" class="gwt-Image" height="34" width="34"></div></td> <td class="GJHURADFJB" align="left" valign="top"> <span class="_username"><span style="color: rgb(34, 34, 34);" class="GJHURADA0B">TheSaint</span></span> <span aria-hidden="true" style="display: none;" class="GJHURADASC"></span> <span></span> </td> <td align="right" valign="top"> <div class="GJHURADOGB"><div aria-label="Přihlásit se a odpovědět" aria-disabled="false" class="GJHURADDY jfk-button-standard GJHURADIY GJHURADCHB GJHURADEIB" role="button" tabindex="0"><img aria-hidden="true" class="gwt-Image GJHURADGY" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAdklEQVR42mNgGAVDHswnwCfLwP94+CSDBqgBCWh8sg1NgGruR+PD8HogLgBiBVINXI/DQHQ8nxjDYYoV0Pj48HsgNqCmS0k2GFeY7ofi+2ji94kNW1js9+OIfQGomvto6qmSTgWgQXae2jlKgJggIDeNjwIaAQBDo0wVdvRN2QAAAABJRU5ErkJggg==" height="21" width="21"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"></span></div><span class="GJHURADCHB GJHURADPGB"><div id="b_action_n08-uYlz8ucJ" aria-label="Další akce zpráv" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3 GJHURADEHB GJHURADLY GJHURADKY" role="button" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div></span></div> <div class="GJHURADFJB GJHURADHJB"> <span title="neděle, 3. července 2011 16:45:33 UTC+2" class="GJHURADEJB GJHURADJUC">03.07.11</span> </div> </td> </tr> </tbody></table></div></div> <div aria-hidden="true" style="display: none;" class="GJHURADEKB"></div> <div class="GJHURADJ5D"><div class="GJHURADGJB" style="display:none;"> <div class="GJHURADNHB" style="display:none;"></div> <div style="display:none;"> <span class="GJHURADLHB"> Další příjemci: </span> <span class="GJHURADKHB"> <span></span> </span> </div> </div> <div style=""><div><div class="GJHURADJKB"><div class="gux-confirm-panel-r1"></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-c"><div><a style="" class="GJHURADATC">Přeložit zprávu do jazyka: čeština +</a> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel">Překládá se...</span> <span aria-hidden="true" style="display: none;" class="gwt-InlineLabel">Přeloženo pomocí Google – angličtina ≫ čeština - </span> <a aria-hidden="true" style="display: none;" class="GJHURADATC">Zobrazit původní</a> </div></div><div class="gux-confirm-panel-r2"></div><div class="gux-confirm-panel-r1"></div></div></div></div> <div aria-hidden="true" class="GJHURADCKB GJHURADIKB" style="display:none;"> <span class="GJHURADDKB">Yeah I will learn alot and surely applying to my code. Merci Beaucoup -- goto /dev/null</span> </div> <div class="GJHURADDJB" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><div><div style="overflow: auto">aspineux wrote:<p>> Hope this help someone.<br>> <br>Yeah<br>I will learn alot and surely applying to my code.</p><p>Merci Beaucoup<br>-- <br>goto /dev/null<br></p><p></p></div></div></div> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Zobrazit oříznutý obsah</a> <div aria-hidden="true" class="GJHURADDJB" style="display:none;"><div></div></div> <div></div> <div></div> <div style="display:none;"></div> <div style="display:none;"></div> <div style="display:none;"></div></div> <div style=""><div class="GJHURADJ5D"></div></div> <div class="GJHURADLGB"> <div class="GJHURADKGB GJHURADAKB" style=""> <div> <div style="display:inline-block;"> <div style="display:none;"></div> </div> <div style="display:none;"></div> <span aria-hidden="true" style="display: none;" class="GJHURADATC GJHURADOTC GJHURADIJB"></span> </div> </div> <div aria-hidden="true" style="display: none;" class="GJHURADFHB"></div> <div class="GJHURADKGB" style="display:none;"> <div></div> </div> </div></div></div></div></div></div><div class="GJHURADIFC"><div aria-hidden="true" style="display: none;"><span class="GJHURADBYC">Předchozí</span> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Předchozí</a> <div aria-disabled="true" aria-haspopup="true" class="GJHURADDY jfk-button-standard GJHURADM3 GJHURADFYC GJHURADJY GJHURADDY-disabled GJHURADEY" role="button" tabindex="0"><input style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;" role="presentation" tabindex="-1" type="text"><span class="GJHURADHY"><span>Stránka <b>1</b></span></span><span class="GJHURADK3"><span role="menu" class="GJHURADL3"></span></span></div> <span class="GJHURADBYC">Další</span> <a aria-hidden="true" style="display: none;" class="gwt-Anchor">Další</a></div></div></div></div><div style="opacity: 103.333;" class="GJHURADGYC"></div></div></div></div></div> <div class="GJHURADFFC" style="display:none;"></div></div></div> </div> </div> </div></div></body></html>
\ No newline at end of file diff --git a/docs/RFC 1036 - Standard for interchange of USENET messages.html b/docs/RFC 1036 - Standard for interchange of USENET messages.html new file mode 100644 index 0000000..a4b68af --- /dev/null +++ b/docs/RFC 1036 - Standard for interchange of USENET messages.html @@ -0,0 +1,1137 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.109"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Relation.Replaces" content="rfc850"> +<meta name="DC.Identifier" content="urn:ietf:rfc:1036"> +<meta name="DC.Date.Issued" content="December, 1987"> +<meta name="DC.Creator" content="Adams, R."> +<meta name="DC.Creator" content="Horton, M.R."> +<meta name="DC.Description.Abstract" content="This RFC defines the standard format for the interchange of network +News messages among USENET hosts. It updates and replaces RFC-850, +reflecting version B2.11 of the News program. This memo is distributed +as an RFC to make this information easily accessible to the Internet +community. It does not specify an Internet standard."> +<meta name="DC.Title" content="Standard for interchange of USENET messages"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 1036 - Standard for interchange of USENET messages</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgbrown { background-color: rgb(136, 68, 0); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgbrown" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="https://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="https://tools.ietf.org/rfc/rfc1036.txt" title="Plaintext version of this document">txt</a>|<a href="https://tools.ietf.org/pdf/rfc1036" title="PDF version of this document">pdf</a>] [<a href="https://www.rfc-editor.org/errata_search.php?rfc=1036">Errata</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo">Obsoleted by: <a href="https://tools.ietf.org/html/rfc5536">5536</a>, <a href="https://tools.ietf.org/html/rfc5537">5537</a> </span><br> +<span class="pre noprint docinfo"> <span style="color: #C00;">Errata Exist</span></span><br> +<pre>Network Working Group M. Horton +Request for Comments: 1036 AT&T Bell Laboratories +Obsoletes: <a href="https://tools.ietf.org/html/rfc850">RFC-850</a> R. Adams + Center for Seismic Studies + December 1987 + + + <span class="h1"><h1>Standard for Interchange of USENET Messages</h1></span> + + + +STATUS OF THIS MEMO + + This document defines the standard format for the interchange of + network News messages among USENET hosts. It updates and replaces + <a href="https://tools.ietf.org/html/rfc850">RFC-850</a>, reflecting version B2.11 of the News program. This memo is + disributed as an RFC to make this information easily accessible to + the Internet community. It does not specify an Internet standard. + Distribution of this memo is unlimited. + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</h2></span> + + This document defines the standard format for the interchange of + network News messages among USENET hosts. It describes the format + for messages themselves and gives partial standards for transmission + of news. The news transmission is not entirely in order to give a + good deal of flexibility to the hosts to choose transmission + hardware and software, to batch news, and so on. + + There are five sections to this document. Section two defines the + format. Section three defines the valid control messages. Section + four specifies some valid transmission methods. Section five + describes the overall news propagation algorithm. + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. Message Format</h2></span> + + The primary consideration in choosing a message format is that it + fit in with existing tools as well as possible. Existing tools + include implementations of both mail and news. (The notesfiles + system from the University of Illinois is considered a news + implementation.) A standard format for mail messages has existed + for many years on the Internet, and this format meets most of the + needs of USENET. Since the Internet format is extensible, + extensions to meet the additional needs of USENET are easily made + within the Internet standard. Therefore, the rule is adopted that + all USENET news messages must be formatted as valid Internet mail + messages, according to the Internet standard <a href="https://tools.ietf.org/html/rfc822">RFC-822</a>. The USENET + News standard is more restrictive than the Internet standard, + + + +<span class="grey">Horton & Adams [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + placing additional requirements on each message and forbidding use + of certain Internet features. However, it should always be possible + to use a tool expecting an Internet message to process a news + message. In any situation where this standard conflicts with the + Internet standard, <a href="https://tools.ietf.org/html/rfc822">RFC-822</a> should be considered correct and this + standard in error. + + Here is an example USENET message to illustrate the fields. + + From: jerry@eagle.ATT.COM (Jerry Schwarz) + Path: cbosgd!mhuxj!mhuxt!eagle!jerry + Newsgroups: news.announce + Subject: Usenet Etiquette -- Please Read + Message-ID: <642@eagle.ATT.COM> + Date: Fri, 19 Nov 82 16:14:55 GMT + Followup-To: news.misc + Expires: Sat, 1 Jan 83 00:00:00 -0500 + Organization: AT&T Bell Laboratories, Murray Hill + + The body of the message comes here, after a blank line. + + Here is an example of a message in the old format (before the + existence of this standard). It is recommended that + implementations also accept messages in this format to ease upward + conversion. + + From: cbosgd!mhuxj!mhuxt!eagle!jerry (Jerry Schwarz) + Newsgroups: news.misc + Title: Usenet Etiquette -- Please Read + Article-I.D.: eagle.642 + Posted: Fri Nov 19 16:14:55 1982 + Received: Fri Nov 19 16:59:30 1982 + Expires: Mon Jan 1 00:00:00 1990 + + The body of the message comes here, after a blank line. + + Some news systems transmit news in the A format, which looks like + this: + + Aeagle.642 + news.misc + cbosgd!mhuxj!mhuxt!eagle!jerry + Fri Nov 19 16:14:55 1982 + Usenet Etiquette - Please Read + The body of the message comes here, with no blank line. + + A standard USENET message consists of several header lines, followed + by a blank line, followed by the body of the message. Each header + + + +<span class="grey">Horton & Adams [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + line consist of a keyword, a colon, a blank, and some additional + information. This is a subset of the Internet standard, simplified + to allow simpler software to handle it. The "From" line may + optionally include a full name, in the format above, or use the + Internet angle bracket syntax. To keep the implementations simple, + other formats (for example, with part of the machine address after + the close parenthesis) are not allowed. The Internet convention of + continuation header lines (beginning with a blank or tab) is + allowed. + + Certain headers are required, and certain other headers are + optional. Any unrecognized headers are allowed, and will be passed + through unchanged. The required header lines are "From", "Date", + "Newsgroups", "Subject", "Message-ID", and "Path". The optional + header lines are "Followup-To", "Expires", "Reply-To", "Sender", + "References", "Control", "Distribution", "Keywords", "Summary", + "Approved", "Lines", "Xref", and "Organization". Each of these + header lines will be described below. + +<span class="h3"><h3><a class="selflink" name="section-2.1" href="#section-2.1">2.1</a>. Required Header lines</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-2.1.1" href="#section-2.1.1">2.1.1</a>. From</h4></span> + + The "From" line contains the electronic mailing address of the + person who sent the message, in the Internet syntax. It may + optionally also contain the full name of the person, in parentheses, + after the electronic address. The electronic address is the same as + the entity responsible for originating the message, unless the + "Sender" header is present, in which case the "From" header might + not be verified. Note that in all host and domain names, upper and + lower case are considered the same, thus "mark@cbosgd.ATT.COM", + "mark@cbosgd.att.com", and "mark@CBosgD.ATt.COm" are all equivalent. + User names may or may not be case sensitive, for example, + "Billy@cbosgd.ATT.COM" might be different from + "BillY@cbosgd.ATT.COM". Programs should avoid changing the case of + electronic addresses when forwarding news or mail. + + <a href="https://tools.ietf.org/html/rfc822">RFC-822</a> specifies that all text in parentheses is to be interpreted + as a comment. It is common in Internet mail to place the full name + of the user in a comment at the end of the "From" line. This + standard specifies a more rigid syntax. The full name is not + considered a comment, but an optional part of the header line. + Either the full name is omitted, or it appears in parentheses after + the electronic address of the person posting the message, or it + appears before an electronic address which is enclosed in angle + brackets. Thus, the three permissible forms are: + + + + + +<span class="grey">Horton & Adams [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + From: mark@cbosgd.ATT.COM + From: mark@cbosgd.ATT.COM (Mark Horton) + From: Mark Horton <mark@cbosgd.ATT.COM> + + Full names may contain any printing ASCII characters from space + through tilde, except that they may not contain "(" (left + parenthesis), ")" (right parenthesis), "<" (left angle bracket), or + ">" (right angle bracket). Additional restrictions may be placed on + full names by the mail standard, in particular, the characters "," + (comma), ":" (colon), "@" (at), "!" (bang), "/" (slash), "=" + (equal), and ";" (semicolon) are inadvisable in full names. + +<span class="h4"><h4><a class="selflink" name="section-2.1.2" href="#section-2.1.2">2.1.2</a>. Date</h4></span> + + The "Date" line (formerly "Posted") is the date that the message was + originally posted to the network. Its format must be acceptable + both in <a href="https://tools.ietf.org/html/rfc822">RFC-822</a> and to the getdate(3) routine that is provided with + the Usenet software. This date remains unchanged as the message is + propagated throughout the network. One format that is acceptable to + both is: + + Wdy, DD Mon YY HH:MM:SS TIMEZONE + + Several examples of valid dates appear in the sample message above. + Note in particular that ctime(3) format: + + Wdy Mon DD HH:MM:SS YYYY + + is not acceptable because it is not a valid <a href="https://tools.ietf.org/html/rfc822">RFC-822</a> date. However, + since older software still generates this format, news + implementations are encouraged to accept this format and translate + it into an acceptable format. + + There is no hope of having a complete list of timezones. Universal + Time (GMT), the North American timezones (PST, PDT, MST, MDT, CST, + CDT, EST, EDT) and the +/-hhmm offset specifed in <a href="https://tools.ietf.org/html/rfc822">RFC-822</a> should be + supported. It is recommended that times in message headers be + transmitted in GMT and displayed in the local time zone. + +<span class="h4"><h4><a class="selflink" name="section-2.1.3" href="#section-2.1.3">2.1.3</a>. Newsgroups</h4></span> + + The "Newsgroups" line specifies the newsgroup or newsgroups in which + the message belongs. Multiple newsgroups may be specified, + separated by a comma. Newsgroups specified must all be the names of + existing newsgroups, as no new newsgroups will be created by simply + posting to them. + + + + + +<span class="grey">Horton & Adams [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + Wildcards (e.g., the word "all") are never allowed in a "News- + groups" line. For example, a newsgroup comp.all is illegal, + although a newsgroup rec.sport.football is permitted. + + If a message is received with a "Newsgroups" line listing some valid + newsgroups and some invalid newsgroups, a host should not remove + invalid newsgroups from the list. Instead, the invalid newsgroups + should be ignored. For example, suppose host A subscribes to the + classes btl.all and comp.all, and exchanges news messages with host + B, which subscribes to comp.all but not btl.all. Suppose A receives + a message with Newsgroups: comp.unix,btl.general. + + This message is passed on to B because B receives comp.unix, but B + does not receive btl.general. A must leave the "Newsgroups" line + unchanged. If it were to remove btl.general, the edited header + could eventually re-enter the btl.all class, resulting in a message + that is not shown to users subscribing to btl.general. Also, + follow-ups from outside btl.all would not be shown to such users. + +<span class="h4"><h4><a class="selflink" name="section-2.1.4" href="#section-2.1.4">2.1.4</a>. Subject</h4></span> + + The "Subject" line (formerly "Title") tells what the message is + about. It should be suggestive enough of the contents of the + message to enable a reader to make a decision whether to read the + message based on the subject alone. If the message is submitted in + response to another message (e.g., is a follow-up) the default + subject should begin with the four characters "Re:", and the + "References" line is required. For follow-ups, the use of the + "Summary" line is encouraged. + +<span class="h4"><h4><a class="selflink" name="section-2.1.5" href="#section-2.1.5">2.1.5</a>. Message-ID</h4></span> + + The "Message-ID" line gives the message a unique identifier. The + Message-ID may not be reused during the lifetime of any previous + message with the same Message-ID. (It is recommended that no + Message-ID be reused for at least two years.) Message-ID's have the + syntax: + + <string not containing blank or ">"> + + In order to conform to <a href="https://tools.ietf.org/html/rfc822">RFC-822</a>, the Message-ID must have the format: + + <unique@full_domain_name> + + where full_domain_name is the full name of the host at which the + message entered the network, including a domain that host is in, and + unique is any string of printing ASCII characters, not including "<" + (left angle bracket), ">" (right angle bracket), or "@" (at sign). + + + +<span class="grey">Horton & Adams [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + For example, the unique part could be an integer representing a + sequence number for messages submitted to the network, or a short + string derived from the date and time the message was created. For + example, a valid Message-ID for a message submitted from host ucbvax + in domain "Berkeley.EDU" would be "<4123@ucbvax.Berkeley.EDU>". + Programmers are urged not to make assumptions about the content of + Message-ID fields from other hosts, but to treat them as unknown + character strings. It is not safe, for example, to assume that a + Message-ID will be under 14 characters, that it is unique in the + first 14 characters, nor that is does not contain a "/". + + The angle brackets are considered part of the Message-ID. Thus, in + references to the Message-ID, such as the ihave/sendme and cancel + control messages, the angle brackets are included. White space + characters (e.g., blank and tab) are not allowed in a Message-ID. + Slashes ("/") are strongly discouraged. All characters between the + angle brackets must be printing ASCII characters. + +<span class="h4"><h4><a class="selflink" name="section-2.1.6" href="#section-2.1.6">2.1.6</a>. Path</h4></span> + + This line shows the path the message took to reach the current + system. When a system forwards the message, it should add its own + name to the list of systems in the "Path" line. The names may be + separated by any punctuation character or characters (except "." + which is considered part of the hostname). Thus, the following are + valid entries: + + cbosgd!mhuxj!mhuxt + cbosgd, mhuxj, mhuxt + @cbosgd.ATT.COM,@mhuxj.ATT.COM,@mhuxt.ATT.COM + teklabs, zehntel, sri-unix@cca!decvax + + (The latter path indicates a message that passed through decvax, + cca, sri-unix, zehntel, and teklabs, in that order.) Additional + names should be added from the left. For example, the most recently + added name in the fourth example was teklabs. Letters, digits, + periods and hyphens are considered part of host names; other + punctuation, including blanks, are considered separators. + + Normally, the rightmost name will be the name of the originating + system. However, it is also permissible to include an extra entry + on the right, which is the name of the sender. This is for upward + compatibility with older systems. + + The "Path" line is not used for replies, and should not be taken as + a mailing address. It is intended to show the route the message + traveled to reach the local host. There are several uses for this + information. One is to monitor USENET routing for performance + + + +<span class="grey">Horton & Adams [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + reasons. Another is to establish a path to reach new hosts. + Perhaps the most important use is to cut down on redundant USENET + traffic by failing to forward a message to a host that is known to + have already received it. In particular, when host A sends a + message to host B, the "Path" line includes A, so that host B will + not immediately send the message back to host A. The name each host + uses to identify itself should be the same as the name by which its + neighbors know it, in order to make this optimization possible. + + A host adds its own name to the front of a path when it receives a + message from another host. Thus, if a message with path "A!X!Y!Z" + is passed from host A to host B, B will add its own name to the path + when it receives the message from A, e.g., "B!A!X!Y!Z". If B then + passes the message on to C, the message sent to C will contain the + path "B!A!X!Y!Z", and when C receives it, C will change it to + "C!B!A!X!Y!Z". + + Special upward compatibility note: Since the "From", "Sender", and + "Reply-To" lines are in Internet format, and since many USENET hosts + do not yet have mailers capable of understanding Internet format, it + would break the reply capability to completely sever the connection + between the "Path" header and the reply function. It is recognized + that the path is not always a valid reply string in older + implementations, and no requirement to fix this problem is placed on + implementations. However, the existing convention of placing the + host name and an "!" at the front of the path, and of starting the + path with the host name, an "!", and the user name, should be + maintained when possible. + +<span class="h3"><h3><a class="selflink" name="section-2.2" href="#section-2.2">2.2</a>. Optional Headers</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-2.2.1" href="#section-2.2.1">2.2.1</a>. Reply-To</h4></span> + + This line has the same format as "From". If present, mailed replies + to the author should be sent to the name given here. Otherwise, + replies are mailed to the name on the "From" line. (This does not + prevent additional copies from being sent to recipients named by the + replier, or on "To" or "Cc" lines.) The full name may be optionally + given, in parentheses, as in the "From" line. + +<span class="h4"><h4><a class="selflink" name="section-2.2.2" href="#section-2.2.2">2.2.2</a>. Sender</h4></span> + + This field is present only if the submitter manually enters a "From" + line. It is intended to record the entity responsible for + submitting the message to the network. It should be verified by the + software at the submitting host. + + + + + +<span class="grey">Horton & Adams [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + For example, if John Smith is visiting CCA and wishes to post a + message to the network, using friend Sarah Jones' account, the + message might read: + + From: smith@ucbvax.Berkeley.EDU (John Smith) + Sender: jones@cca.COM (Sarah Jones) + + If a gateway program enters a mail message into the network at host + unix.SRI.COM, the lines might read: + + From: John.Doe@A.CS.CMU.EDU + Sender: network@unix.SRI.COM + + The primary purpose of this field is to be able to track down + messages to determine how they were entered into the network. The + full name may be optionally given, in parentheses, as in the "From" + line. + +<span class="h4"><h4><a class="selflink" name="section-2.2.3" href="#section-2.2.3">2.2.3</a>. Followup-To</h4></span> + + This line has the same format as "Newsgroups". If present, follow- + up messages are to be posted to the newsgroup or newsgroups listed + here. If this line is not present, follow-ups are posted to the + newsgroup or newsgroups listed in the "Newsgroups" line. + + If the keyword poster is present, follow-up messages are not + permitted. The message should be mailed to the submitter of the + message via mail. + +<span class="h4"><h4><a class="selflink" name="section-2.2.4" href="#section-2.2.4">2.2.4</a>. Expires</h4></span> + + This line, if present, is in a legal USENET date format. It + specifies a suggested expiration date for the message. If not + present, the local default expiration date is used. This field is + intended to be used to clean up messages with a limited usefulness, + or to keep important messages around for longer than usual. For + example, a message announcing an upcoming seminar could have an + expiration date the day after the seminar, since the message is not + useful after the seminar is over. Since local hosts have local + policies for expiration of news (depending on available disk space, + for instance), users are discouraged from providing expiration dates + for messages unless there is a natural expiration date associated + with the topic. System software should almost never provide a + default "Expires" line. Leave it out and allow local policies to be + used unless there is a good reason not to. + + + + + + +<span class="grey">Horton & Adams [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + +<span class="h4"><h4><a class="selflink" name="section-2.2.5" href="#section-2.2.5">2.2.5</a>. References</h4></span> + + This field lists the Message-ID's of any messages prompting the + submission of this message. It is required for all follow-up + messages, and forbidden when a new subject is raised. + Implementations should provide a follow-up command, which allows a + user to post a follow-up message. This command should generate a + "Subject" line which is the same as the original message, except + that if the original subject does not begin with "Re:" or "re:", the + four characters "Re:" are inserted before the subject. If there is + no "References" line on the original header, the "References" line + should contain the Message-ID of the original message (including the + angle brackets). If the original message does have a "References" + line, the follow-up message should have a "References" line + containing the text of the original "References" line, a blank, and + the Message-ID of the original message. + + The purpose of the "References" header is to allow messages to be + grouped into conversations by the user interface program. This + allows conversations within a newsgroup to be kept together, and + potentially users might shut off entire conversations without + unsubscribing to a newsgroup. User interfaces need not make use of + this header, but all automatically generated follow-ups should + generate the "References" line for the benefit of systems that do + use it, and manually generated follow-ups (e.g., typed in well after + the original message has been printed by the machine) should be + encouraged to include them as well. + + It is permissible to not include the entire previous "References" + line if it is too long. An attempt should be made to include a + reasonable number of backwards references. + +<span class="h4"><h4><a class="selflink" name="section-2.2.6" href="#section-2.2.6">2.2.6</a>. Control</h4></span> + + If a message contains a "Control" line, the message is a control + message. Control messages are used for communication among USENET + host machines, not to be read by users. Control messages are + distributed by the same newsgroup mechanism as ordinary messages. + The body of the "Control" header line is the message to the host. + + For upward compatibility, messages that match the newsgroup pattern + "all.all.ctl" should also be interpreted as control messages. If no + "Control" header is present on such messages, the subject is used as + the control message. However, messages on newsgroups matching this + pattern do not conform to this standard. + + + + + + +<span class="grey">Horton & Adams [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + Also for upward compatibility, if the first 4 characters of the + "Subject:" line are "cmsg", the rest of the "Subject:" line should + be interpreted as a control message. + +<span class="h4"><h4><a class="selflink" name="section-2.2.7" href="#section-2.2.7">2.2.7</a>. Distribution</h4></span> + + This line is used to alter the distribution scope of the message. + It is a comma separated list similar to the "Newsgroups" line. User + subscriptions are still controlled by "Newsgroups", but the message + is sent to all systems subscribing to the newsgroups on the + "Distribution" line in addition to the "Newsgroups" line. For the + message to be transmitted, the receiving site must normally receive + one of the specified newsgroups AND must receive one of the + specified distributions. Thus, a message concerning a car for sale + in New Jersey might have headers including: + + Newsgroups: rec.auto,misc.forsale + Distribution: nj,ny + + so that it would only go to persons subscribing to rec.auto or misc. + for sale within New Jersey or New York. The intent of this header + is to restrict the distribution of a newsgroup further, not to + increase it. A local newsgroup, such as nj.crazy-eddie, will + probably not be propagated by hosts outside New Jersey that do not + show such a newsgroup as valid. A follow-up message should default + to the same "Distribution" line as the original message, but the + user can change it to a more limited one, or escalate the + distribution if it was originally restricted and a more widely + distributed reply is appropriate. + +<span class="h4"><h4><a class="selflink" name="section-2.2.8" href="#section-2.2.8">2.2.8</a>. Organization</h4></span> + + The text of this line is a short phrase describing the organization + to which the sender belongs, or to which the machine belongs. The + intent of this line is to help identify the person posting the + message, since host names are often cryptic enough to make it hard + to recognize the organization by the electronic address. + +<span class="h4"><h4><a class="selflink" name="section-2.2.9" href="#section-2.2.9">2.2.9</a>. Keywords</h4></span> + + A few well-selected keywords identifying the message should be on + this line. This is used as an aid in determining if this message is + interesting to the reader. + +<span class="h4"><h4><a class="selflink" name="section-2.2.10" href="#section-2.2.10">2.2.10</a>. Summary</h4></span> + + This line should contain a brief summary of the message. It is + usually used as part of a follow-up to another message. Again, it + + + +<span class="grey">Horton & Adams [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + is very useful to the reader in determining whether to read the + message. + +<span class="h4"><h4><a class="selflink" name="section-2.2.11" href="#section-2.2.11">2.2.11</a>. Approved</h4></span> + + This line is required for any message posted to a moderated + newsgroup. It should be added by the moderator and consist of his + mail address. It is also required with certain control messages. + +<span class="h4"><h4><a class="selflink" name="section-2.2.12" href="#section-2.2.12">2.2.12</a>. Lines</h4></span> + + This contains a count of the number of lines in the body of the + message. + +<span class="h4"><h4><a class="selflink" name="section-2.2.13" href="#section-2.2.13">2.2.13</a>. Xref</h4></span> + + This line contains the name of the host (with domains omitted) and a + white space separated list of colon-separated pairs of newsgroup + names and message numbers. These are the newsgroups listed in the + "Newsgroups" line and the corresponding message numbers from the + spool directory. + + This is only of value to the local system, so it should not be + transmitted. For example, in: + + Path: seismo!lll-crg!lll-lcc!pyramid!decwrl!reid + From: reid@decwrl.DEC.COM (Brian Reid) + Newsgroups: news.lists,news.groups + Subject: USENET READERSHIP SUMMARY REPORT FOR SEP 86 + Message-ID: <5658@decwrl.DEC.COM> + Date: 1 Oct 86 11:26:15 GMT + Organization: DEC Western Research Laboratory + Lines: 441 + Approved: reid@decwrl.UUCP + Xref: seismo news.lists:461 news.groups:6378 + + the "Xref" line shows that the message is message number 461 in the + newsgroup news.lists, and message number 6378 in the newsgroup + news.groups, on host seismo. This information may be used by + certain user interfaces. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. Control Messages</h2></span> + + This section lists the control messages currently defined. The body + of the "Control" header line is the control message. Messages are a + sequence of zero or more words, separated by white space (blanks or + tabs). The first word is the name of the control message, remaining + words are parameters to the message. The remainder of the header + + + +<span class="grey">Horton & Adams [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + and the body of the message are also potential parameters; for + example, the "From" line might suggest an address to which a + response is to be mailed. + + Implementors and administrators may choose to allow control messages + to be carried out automatically, or to queue them for annual + processing. However, manually processed messages should be dealt + with promptly. + + Failed control messages should NOT be mailed to the originator of + the message, but to the local "usenet" account. + +<span class="h3"><h3><a class="selflink" name="section-3.1" href="#section-3.1">3.1</a>. Cancel</h3></span> + + cancel <Message-ID> + + + If a message with the given Message-ID is present on the local + system, the message is cancelled. This mechanism allows a user to + cancel a message after the message has been distributed over the + network. + + If the system is unable to cancel the message as requested, it + should not forward the cancellation request to its neighbor systems. + + Only the author of the message or the local news administrator is + allowed to send this message. The verified sender of a message is + the "Sender" line, or if no "Sender" line is present, the "From" + line. The verified sender of the cancel message must be the same as + either the "Sender" or "From" field of the original message. A + verified sender in the cancel message is allowed to match an + unverified "From" in the original message. + +<span class="h3"><h3><a class="selflink" name="section-3.2" href="#section-3.2">3.2</a>. Ihave/Sendme</h3></span> + + ihave <Message-ID list> [<remotesys>] + sendme <Message-ID list> [<remotesys>] + + This message is part of the ihave/sendme protocol, which allows one + host (say A) to tell another host (B) that a particular message has + been received on A. Suppose that host A receives message + "<1234@ucbvax.Berkeley.edu>", and wishes to transmit the message to + host B. + + A sends the control message "ihave <1234@ucbvax.Berkeley.edu> A" to + host B (by posting it to newsgroup to.B). B responds with the + control message "sendme <1234@ucbvax.Berkeley.edu> B" (on newsgroup + to.A), if it has not already received the message. Upon receiving + + + +<span class="grey">Horton & Adams [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + the sendme message, A sends the message to B. + + This protocol can be used to cut down on redundant traffic between + hosts. It is optional and should be used only if the particular + situation makes it worthwhile. Frequently, the outcome is that, + since most original messages are short, and since there is a high + overhead to start sending a new message with UUCP, it costs as much + to send the ihave as it would cost to send the message itself. + + One possible solution to this overhead problem is to batch requests. + Several Message-ID's may be announced or requested in one message. + If no Message-ID's are listed in the control message, the body of + the message should be scanned for Message-ID's, one per line. + +<span class="h3"><h3><a class="selflink" name="section-3.3" href="#section-3.3">3.3</a>. Newgroup</h3></span> + + newgroup <groupname> [moderated] + + This control message creates a new newsgroup with the given name. + Since no messages may be posted or forwarded until a newsgroup is + created, this message is required before a newsgroup can be used. + The body of the message is expected to be a short paragraph + describing the intended use of the newsgroup. + + If the second argument is present and it is the keyword moderated, + the group should be created moderated instead of the default of + unmoderated. The newgroup message should be ignored unless there is + an "Approved" line in the same message header. + +<span class="h3"><h3><a class="selflink" name="section-3.4" href="#section-3.4">3.4</a>. Rmgroup</h3></span> + + rmgroup <groupname> + + This message removes a newsgroup with the given name. Since the + newsgroup is removed from every host on the network, this command + should be used carefully by a responsible administrator. The + rmgroup message should be ignored unless there is an "Approved:" + line in the same message header. + + + + + + + + + + + + + +<span class="grey">Horton & Adams [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + +<span class="h3"><h3><a class="selflink" name="section-3.5" href="#section-3.5">3.5</a>. Sendsys</h3></span> +<span class="h3"><h3> sendsys (no arguments)</h3></span> + + The sys file, listing all neighbors and the newsgroups to be sent to + each neighbor, will be mailed to the author of the control message + ("Reply-To", if present, otherwise "From"). This information is + considered public information, and it is a requirement of membership + in USENET that this information be provided on request, either + automatically in response to this control message, or manually, by + mailing the requested information to the author of the message. + This information is used to keep the map of USENET up to date, and + to determine where netnews is sent. + + The format of the file mailed back to the author should be the same + as that of the sys file. This format has one line per neighboring + host (plus one line for the local host), containing four colon + separated fields. The first field has the host name of the + neighbor, the second field has a newsgroup pattern describing the + newsgroups sent to the neighbor. The third and fourth fields are + not defined by this standard. The sys file is not the same as the + UUCP L.sys file. A sample response is: + + From: cbosgd!mark (Mark Horton) + Date: Sun, 27 Mar 83 20:39:37 -0500 + Subject: response to your sendsys request + To: mark@cbosgd.ATT.COM + + Responding-System: cbosgd.ATT.COM + cbosgd:osg,cb,btl,bell,world,comp,sci,rec,talk,misc,news,soc,to, + test + ucbvax:world,comp,to.ucbvax:L: + cbosg:world,comp,bell,btl,cb,osg,to.cbosg:F:/usr/spool/outnews + /cbosg + cbosgb:osg,to.cbosgb:F:/usr/spool/outnews/cbosgb + sescent:world,comp,bell,btl,cb,to.sescent:F:/usr/spool/outnews + /sescent + npois:world,comp,bell,btl,ug,to.npois:F:/usr/spool/outnews/npois + mhuxi:world,comp,bell,btl,ug,to.mhuxi:F:/usr/spool/outnews/mhuxi + +<span class="h3"><h3><a class="selflink" name="section-3.6" href="#section-3.6">3.6</a>. Version</h3></span> + + version (no arguments) + + The name and version of the software running on the local system is + to be mailed back to the author of the message ("Reply-to" if + present, otherwise "From"). + +<span class="h3"><h3><a class="selflink" name="section-3.7" href="#section-3.7">3.7</a>. Checkgroups</h3></span> + + + +<span class="grey">Horton & Adams [Page 14]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + The message body is a list of "official" newsgroups and their + description, one group per line. They are compared against the list + of active newsgroups on the current host. The names of any obsolete + or new newsgroups are mailed to the user "usenet" and descriptions + of the new newsgroups are added to the help file used when posting + news. + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. Transmission Methods</h2></span> + + USENET is not a physical network, but rather a logical network + resting on top of several existing physical networks. These + networks include, but are not limited to, UUCP, the Internet, an + Ethernet, the BLICN network, an NSC Hyperchannel, and a BERKNET. + What is important is that two neighboring systems on USENET have + some method to get a new message, in the format listed here, from + one system to the other, and once on the receiving system, processed + by the netnews software on that system. (On UNIX systems, this + usually means the rnews program being run with the message on the + standard input. <1>) + + It is not a requirement that USENET hosts have mail systems capable + of understanding the Internet mail syntax, but it is strongly + recommended. Since "From", "Reply-To", and "Sender" lines use the + Internet syntax, replies will be difficult or impossible without an + Internet mailer. A host without an Internet mailer can attempt to + use the "Path" header line for replies, but this field is not + guaranteed to be a working path for replies. In any event, any host + generating or forwarding news messages must have an Internet address + that allows them to receive mail from hosts with Internet mailers, + and they must include their Internet address on their From line. + +<span class="h3"><h3><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a>. Remote Execution</h3></span> + + Some networks permit direct remote command execution. On these + networks, news may be forwarded by spooling the rnews command with + the message on the standard input. For example, if the remote + system is called remote, news would be sent over a UUCP link + with the command: + + uux - remote!rnews + + and on a Berknet: + + net -mremote rnews + + + + + + + +<span class="grey">Horton & Adams [Page 15]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + It is important that the message be sent via a reliable mechanism, + normally involving the possibility of spooling, rather than direct + real-time remote execution. This is because, if the remote system + is down, a direct execution command will fail, and the message will + never be delivered. If the message is spooled, it will eventually + be delivered when both systems are up. + +<span class="h3"><h3><a class="selflink" name="section-4.2" href="#section-4.2">4.2</a>. Transfer by Mail</h3></span> + + On some systems, direct remote spooled execution is not possible. + However, most systems support electronic mail, and a news message + can be sent as mail. One approach is to send a mail message which + is identical to the news message: the mail headers are the news + headers, and the mail body is the news body. By convention, this + mail is sent to the user newsmail on the remote machine. + + One problem with this method is that it may not be possible to + convince the mail system that the "From" line of the message is + valid, since the mail message was generated by a program on a + system different from the source of the news message. Another + problem is that error messages caused by the mail transmission + would be sent to the originator of the news message, who has no + control over news transmission between two cooperating hosts + and does not know whom to contact. Transmission error messages + should be directed to a responsible contact person on the + sending machine. + + A solution to this problem is to encapsulate the news message into a + mail message, such that the entire message (headers and body) are + part of the body of the mail message. The convention here is that + such mail is sent to user rnews on the remote system. A mail + message body is generated by prepending the letter N to each line of + the news message, and then attaching whatever mail headers are + convenient to generate. The N's are attached to prevent any special + lines in the news message from interfering with mail transmission, + and to prevent any extra lines inserted by the mailer (headers, + blank lines, etc.) from becoming part of the news message. A + program on the receiving machine receives mail to rnews, extracting + the message itself and invoking the rnews program. An example in + this format might look like this: + + + + + + + + + + + +<span class="grey">Horton & Adams [Page 16]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + Date: Mon, 3 Jan 83 08:33:47 MST + From: news@cbosgd.ATT.COM + Subject: network news message + To: rnews@npois.ATT.COM + + NPath: cbosgd!mhuxj!harpo!utah-cs!sask!derek + NFrom: derek@sask.UUCP (Derek Andrew) + NNewsgroups: misc.test + NSubject: necessary test + NMessage-ID: <176@sask.UUCP> + NDate: Mon, 3 Jan 83 00:59:15 MST + N + NThis really is a test. If anyone out there more than 6 + Nhops away would kindly confirm this note I would + Nappreciate it. We suspect that our news postings + Nare not getting out into the world. + N + + Using mail solves the spooling problem, since mail must always be + spooled if the destination host is down. However, it adds more + overhead to the transmission process (to encapsulate and extract the + message) and makes it harder for software to give different + priorities to news and mail. + +<span class="h3"><h3><a class="selflink" name="section-4.3" href="#section-4.3">4.3</a>. Batching</h3></span> + + Since news messages are usually short, and since a large number of + messages are often sent between two hosts in a day, it may make + sense to batch news messages. Several messages can be combined into + one large message, using conventions agreed upon in advance by the + two hosts. One such batching scheme is described here; its use is + highly recommended. + + News messages are combined into a script, separated by a header of + the form: + + + #! rnews 1234 + + where 1234 is the length of the message in bytes. Each such line is + followed by a message containing the given number of bytes. (The + newline at the end of each line of the message is counted as one + byte, for purposes of this count, even if it is stored as <CARRIAGE + RETURN><LINE FEED>.) For example, a batch of message might look + like this: + + + + + + +<span class="grey">Horton & Adams [Page 17]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + #! rnews 239 + From: jerry@eagle.ATT.COM (Jerry Schwarz) + Path: cbosgd!mhuxj!mhuxt!eagle!jerry + Newsgroups: news.announce + Subject: Usenet Etiquette -- Please Read + Message-ID: <642@eagle.ATT.COM> + Date: Fri, 19 Nov 82 16:14:55 EST + Approved: mark@cbosgd.ATT.COM + + Here is an important message about USENET Etiquette. + #! rnews 234 + From: jerry@eagle.ATT.COM (Jerry Schwarz) + Path: cbosgd!mhuxj!mhuxt!eagle!jerry + Newsgroups: news.announce + Subject: Notes on Etiquette message + Message-ID: <643@eagle.ATT.COM> + Date: Fri, 19 Nov 82 17:24:12 EST + Approved: mark@cbosgd.ATT.COM + + There was something I forgot to mention in the last + message. + + Batched news is recognized because the first character in the + message is #. The message is then passed to the unbatcher for + interpretation. + + The second argument (in this example rnews) determines which + batching scheme is being used. Cooperating hosts may use whatever + scheme is appropriate for them. + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. The News Propagation Algorithm</h2></span> + + This section describes the overall scheme of USENET and the + algorithm followed by hosts in propagating news to the entire + logical network. Since all hosts are affected by incorrectly + formatted messages and by propagation errors, it is important + for the method to be standardized. + + USENET is a directed graph. Each node in the graph is a host + computer, and each arc in the graph is a transmission path from + one host to another host. Each arc is labeled with a newsgroup + pattern, specifying which newsgroup classes are forwarded along + that link. Most arcs are bidirectional, that is, if host A + sends a class of newsgroups to host B, then host B usually sends + the same class of newsgroups to host A. This bidirectionality + is not, however, required. + + USENET is made up of many subnetworks. Each subnet has a name, such + + + +<span class="grey">Horton & Adams [Page 18]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a> +<span class="grey"><a href="#">RFC 1036</a> Standard for USENET Messages December 1987</span> + + + as comp or btl. Each subnet is a connected graph, that is, a path + exists from every node to every other node in the subnet. In + addition, the entire graph is (theoretically) connected. (In + practice, some political considerations have caused some hosts to be + unable to post messages reaching the rest of the network.) + + A message is posted on one machine to a list of newsgroups. That + machine accepts it locally, then forwards it to all its neighbors + that are interested in at least one of the newsgroups of the + message. (Site A deems host B to be "interested" in a newsgroup if + the newsgroup matches the pattern on the arc from A to B. This + pattern is stored in a file on the A machine.) The hosts receiving + the incoming message examine it to make sure they really want the + message, accept it locally, and then in turn forward the message to + all their interested neighbors. This process continues until the + entire network has seen the message. + + An important part of the algorithm is the prevention of loops. The + above process would cause a message to loop along a cycle forever. + In particular, when host A sends a message to host B, host B will + send it back to host A, which will send it to host B, and so on. + One solution to this is the history mechanism. Each host keeps + track of all messages it has seen (by their Message-ID) and + whenever a message comes in that it has already seen, the incoming + message is discarded immediately. This solution is sufficient to + prevent loops, but additional optimizations can be made to avoid + sending messages to hosts that will simply throw them away. + + One optimization is that a message should never be sent to a machine + listed in the "Path" line of the header. When a machine name is + in the "Path" line, the message is known to have passed through the + machine. Another optimization is that, if the message originated + on host A, then host A has already seen the message. Thus, if a + message is posted to newsgroup misc.misc, it will match the pattern + misc.all (where all is a metasymbol that matches any string), and + will be forwarded to all hosts that subscribe to misc.all (as + determined by what their neighbors send them). These hosts make up + the misc subnetwork. A message posted to btl.general will reach all + hosts receiving btl.all, but will not reach hosts that do not get + btl.all. In effect, the messages reaches the btl subnetwork. A + messages posted to newsgroups misc.misc,btl.general will reach all + hosts subscribing to either of the two classes. + +Notes + + <1> UNIX is a registered trademark of AT&T. + + + + + +Horton & Adams [Page 19] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.109, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/docs/RFC 2821 - Simple Mail Transfer Protocol.html b/docs/RFC 2821 - Simple Mail Transfer Protocol.html new file mode 100644 index 0000000..19f2bbc --- /dev/null +++ b/docs/RFC 2821 - Simple Mail Transfer Protocol.html @@ -0,0 +1,4495 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.109"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Relation.Replaces" content="rfc821"> +<meta name="DC.Relation.Replaces" content="rfc974"> +<meta name="DC.Relation.Replaces" content="rfc1869"> +<meta name="DC.Identifier" content="urn:ietf:rfc:2821"> +<meta name="DC.Date.Issued" content="April, 2001"> +<meta name="DC.Creator" content="John C. Klensin <klensin@research.att.com>"> +<meta name="DC.Description.Abstract" content="This document is a self-contained specification of the basic protocol +for the Internet electronic mail transport. [STANDARDS-TRACK]"> +<meta name="DC.Title" content="Simple Mail Transfer Protocol"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 2821 - Simple Mail Transfer Protocol</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgbrown { background-color: rgb(136, 68, 0); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgbrown" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="http://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="http://tools.ietf.org/rfc/rfc2821.txt" title="Plaintext version of this document">txt</a>|<a href="http://tools.ietf.org/pdf/rfc2821" title="PDF version of this document">pdf</a>] [<a href="http://tools.ietf.org/html/draft-ietf-drums-smtpupd" title="draft-ietf-drums-smtpupd">draft-ietf-drums-...</a>] [<a href="http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=rfc2821" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://tools.ietf.org/rfcdiff?url2=rfc2821" title="Side-by-side diff">Diff2</a>] [<a href="https://www.rfc-editor.org/errata_search.php?rfc=2821">Errata</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo">Obsoleted by: <a href="http://tools.ietf.org/html/rfc5321">5321</a> PROPOSED STANDARD</span><br> +<span class="pre noprint docinfo">Updated by: <a href="http://tools.ietf.org/html/rfc5336">5336</a> <span style="color: #C00;">Errata Exist</span></span><br> +<pre>Network Working Group J. Klensin, Editor +Request for Comments: 2821 AT&T Laboratories +Obsoletes: <a href="http://tools.ietf.org/html/rfc821">821</a>, <a href="http://tools.ietf.org/html/rfc974">974</a>, <a href="http://tools.ietf.org/html/rfc1869">1869</a> April 2001 +Updates: <a href="http://tools.ietf.org/html/rfc1123">1123</a> +Category: Standards Track + + + <span class="h1"><h1>Simple Mail Transfer Protocol</h1></span> + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2001). All Rights Reserved. + +Abstract + + This document is a self-contained specification of the basic protocol + for the Internet electronic mail transport. It consolidates, updates + and clarifies, but doesn't add new or change existing functionality + of the following: + + - the original SMTP (Simple Mail Transfer Protocol) specification of + <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> [<a href="#ref-30" title='"Simple Mail Transfer Protocol"'>30</a>], + + - domain name system requirements and implications for mail + transport from <a href="http://tools.ietf.org/html/rfc1035">RFC 1035</a> [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>] and <a href="http://tools.ietf.org/html/rfc974">RFC 974</a> [<a href="#ref-27" title='"Mail routing and the domain system"'>27</a>], + + - the clarifications and applicability statements in <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a> [<a href="#ref-2" title='"Requirements for Internet hosts - application and support"'>2</a>], + and + + - material drawn from the SMTP Extension mechanisms [<a href="#ref-19" title='"SMTP Service Extensions"'>19</a>]. + + It obsoletes <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>, <a href="http://tools.ietf.org/html/rfc974">RFC 974</a>, and updates <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a> (replaces the + mail transport materials of <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a>). However, <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> specifies + some features that were not in significant use in the Internet by the + mid-1990s and (in appendices) some additional transport models. + Those sections are omitted here in the interest of clarity and + brevity; readers needing them should refer to <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>. + + + + + + +<span class="grey">Klensin Standards Track [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + It also includes some additional material from <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a> that required + amplification. This material has been identified in multiple ways, + mostly by tracking flaming on various lists and newsgroups and + problems of unusual readings or interpretations that have appeared as + the SMTP extensions have been deployed. Where this specification + moves beyond consolidation and actually differs from earlier + documents, it supersedes them technically as well as textually. + + Although SMTP was designed as a mail transport and delivery protocol, + this specification also contains information that is important to its + use as a 'mail submission' protocol, as recommended for POP [<a href="#ref-3" title='"Post Office Protocol - version 2"'>3</a>, <a href="#ref-26" title='"Post Office Protocol - Version 3"'>26</a>] + and IMAP [<a href="#ref-6" title='"Internet Message Access Protocol - Version 4"'>6</a>]. Additional submission issues are discussed in <a href="http://tools.ietf.org/html/rfc2476">RFC 2476</a> + [<a href="#ref-15" title='"Message Submission"'>15</a>]. + + <a href="#section-2.3">Section 2.3</a> provides definitions of terms specific to this document. + Except when the historical terminology is necessary for clarity, this + document uses the current 'client' and 'server' terminology to + identify the sending and receiving SMTP processes, respectively. + + A companion document [<a href="#ref-32" title='"Internet Message Format"'>32</a>] discusses message headers, message bodies + and formats and structures for them, and their relationship. + +Table of Contents + + <a href="#section-1">1</a>. Introduction .................................................. <a href="#page-4">4</a> + <a href="#section-2">2</a>. The SMTP Model ................................................ <a href="#page-5">5</a> + <a href="#section-2.1">2.1</a> Basic Structure .............................................. <a href="#page-5">5</a> + <a href="#section-2.2">2.2</a> The Extension Model .......................................... <a href="#page-7">7</a> + <a href="#section-2.2.1">2.2.1</a> Background ................................................. <a href="#page-7">7</a> + <a href="#section-2.2.2">2.2.2</a> Definition and Registration of Extensions .................. <a href="#page-8">8</a> + <a href="#section-2.3">2.3</a> Terminology .................................................. <a href="#page-9">9</a> + <a href="#section-2.3.1">2.3.1</a> Mail Objects ............................................... <a href="#page-10">10</a> + <a href="#section-2.3.2">2.3.2</a> Senders and Receivers ...................................... <a href="#page-10">10</a> + <a href="#section-2.3.3">2.3.3</a> Mail Agents and Message Stores ............................. <a href="#page-10">10</a> + <a href="#section-2.3.4">2.3.4</a> Host ....................................................... <a href="#page-11">11</a> + <a href="#section-2.3.5">2.3.5</a> Domain ..................................................... <a href="#page-11">11</a> + <a href="#section-2.3.6">2.3.6</a> Buffer and State Table ..................................... <a href="#page-11">11</a> + <a href="#section-2.3.7">2.3.7</a> Lines ...................................................... <a href="#page-12">12</a> + <a href="#section-2.3.8">2.3.8</a> Originator, Delivery, Relay, and Gateway Systems ........... <a href="#page-12">12</a> + <a href="#section-2.3.9">2.3.9</a> Message Content and Mail Data .............................. <a href="#page-13">13</a> + <a href="#section-2.3.10">2.3.10</a> Mailbox and Address ....................................... <a href="#page-13">13</a> + <a href="#section-2.3.11">2.3.11</a> Reply ..................................................... <a href="#page-13">13</a> + <a href="#section-2.4">2.4</a> General Syntax Principles and Transaction Model .............. <a href="#page-13">13</a> + <a href="#section-3">3</a>. The SMTP Procedures: An Overview .............................. <a href="#page-15">15</a> + <a href="#section-3.1">3.1</a> Session Initiation ........................................... <a href="#page-15">15</a> + <a href="#section-3.2">3.2</a> Client Initiation ............................................ <a href="#page-16">16</a> + <a href="#section-3.3">3.3</a> Mail Transactions ............................................ <a href="#page-16">16</a> + <a href="#section-3.4">3.4</a> Forwarding for Address Correction or Updating ................ <a href="#page-19">19</a> + + + +<span class="grey">Klensin Standards Track [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + <a href="#section-3.5">3.5</a> Commands for Debugging Addresses ............................. <a href="#page-20">20</a> + <a href="#section-3.5.1">3.5.1</a> Overview ................................................... <a href="#page-20">20</a> + <a href="#section-3.5.2">3.5.2</a> VRFY Normal Response ....................................... <a href="#page-22">22</a> + <a href="#section-3.5.3">3.5.3</a> Meaning of VRFY or EXPN Success Response ................... <a href="#page-22">22</a> + <a href="#section-3.5.4">3.5.4</a> Semantics and Applications of EXPN ......................... <a href="#page-23">23</a> + <a href="#section-3.6">3.6</a> Domains ...................................................... <a href="#page-23">23</a> + <a href="#section-3.7">3.7</a> Relaying ..................................................... <a href="#page-24">24</a> + <a href="#section-3.8">3.8</a> Mail Gatewaying .............................................. <a href="#page-25">25</a> + <a href="#section-3.8.1">3.8.1</a> Header Fields in Gatewaying ................................ <a href="#page-26">26</a> + <a href="#section-3.8.2">3.8.2</a> Received Lines in Gatewaying ............................... <a href="#page-26">26</a> + <a href="#section-3.8.3">3.8.3</a> Addresses in Gatewaying .................................... <a href="#page-26">26</a> + <a href="#section-3.8.4">3.8.4</a> Other Header Fields in Gatewaying .......................... <a href="#page-27">27</a> + <a href="#section-3.8.5">3.8.5</a> Envelopes in Gatewaying .................................... <a href="#page-27">27</a> + <a href="#section-3.9">3.9</a> Terminating Sessions and Connections ......................... <a href="#page-27">27</a> + <a href="#section-3.10">3.10</a> Mailing Lists and Aliases ................................... <a href="#page-28">28</a> + <a href="#section-3.10.1">3.10.1</a> Alias ..................................................... <a href="#page-28">28</a> + <a href="#section-3.10.2">3.10.2</a> List ...................................................... <a href="#page-28">28</a> + <a href="#section-4">4</a>. The SMTP Specifications ....................................... <a href="#page-29">29</a> + <a href="#section-4.1">4.1</a> SMTP Commands ................................................ <a href="#page-29">29</a> + <a href="#section-4.1.1">4.1.1</a> Command Semantics and Syntax ............................... <a href="#page-29">29</a> + <a href="#section-4.1.1.1">4.1.1.1</a> Extended HELLO (EHLO) or HELLO (HELO) ................... <a href="#page-29">29</a> + <a href="#section-4.1.1.2">4.1.1.2</a> MAIL (MAIL) .............................................. <a href="#page-31">31</a> + <a href="#section-4.1.1.3">4.1.1.3</a> RECIPIENT (RCPT) ......................................... <a href="#page-31">31</a> + <a href="#section-4.1.1.4">4.1.1.4</a> DATA (DATA) .............................................. <a href="#page-33">33</a> + <a href="#section-4.1.1.5">4.1.1.5</a> RESET (RSET) ............................................. <a href="#page-34">34</a> + <a href="#section-4.1.1.6">4.1.1.6</a> VERIFY (VRFY) ............................................ <a href="#page-35">35</a> + <a href="#section-4.1.1.7">4.1.1.7</a> EXPAND (EXPN) ............................................ <a href="#page-35">35</a> + <a href="#section-4.1.1.8">4.1.1.8</a> HELP (HELP) .............................................. <a href="#page-35">35</a> + <a href="#section-4.1.1.9">4.1.1.9</a> NOOP (NOOP) .............................................. <a href="#page-35">35</a> + <a href="#section-4.1.1.10">4.1.1.10</a> QUIT (QUIT) ............................................. <a href="#page-36">36</a> + <a href="#section-4.1.2">4.1.2</a> Command Argument Syntax .................................... <a href="#page-36">36</a> + <a href="#section-4.1.3">4.1.3</a> Address Literals ........................................... <a href="#page-38">38</a> + <a href="#section-4.1.4">4.1.4</a> Order of Commands .......................................... <a href="#page-39">39</a> + <a href="#section-4.1.5">4.1.5</a> Private-use Commands ....................................... <a href="#page-40">40</a> + <a href="#section-4.2">4.2</a> SMTP Replies ................................................ <a href="#page-40">40</a> + <a href="#section-4.2.1">4.2.1</a> Reply Code Severities and Theory ........................... <a href="#page-42">42</a> + <a href="#section-4.2.2">4.2.2</a> Reply Codes by Function Groups ............................. <a href="#page-44">44</a> + <a href="#section-4.2.3">4.2.3</a> Reply Codes in Numeric Order .............................. <a href="#page-45">45</a> + <a href="#section-4.2.4">4.2.4</a> Reply Code 502 ............................................. <a href="#page-46">46</a> + <a href="#section-4.2.5">4.2.5</a> Reply Codes After DATA and the Subsequent <CRLF>.<CRLF> .... <a href="#page-46">46</a> + <a href="#section-4.3">4.3</a> Sequencing of Commands and Replies ........................... <a href="#page-47">47</a> + <a href="#section-4.3.1">4.3.1</a> Sequencing Overview ........................................ <a href="#page-47">47</a> + <a href="#section-4.3.2">4.3.2</a> Command-Reply Sequences .................................... <a href="#page-48">48</a> + <a href="#section-4.4">4.4</a> Trace Information ............................................ <a href="#page-49">49</a> + <a href="#section-4.5">4.5</a> Additional Implementation Issues ............................. <a href="#page-53">53</a> + <a href="#section-4.5.1">4.5.1</a> Minimum Implementation ..................................... <a href="#page-53">53</a> + <a href="#section-4.5.2">4.5.2</a> Transparency ............................................... <a href="#page-53">53</a> + <a href="#section-4.5.3">4.5.3</a> Sizes and Timeouts ......................................... <a href="#page-54">54</a> + + + +<span class="grey">Klensin Standards Track [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + <a href="#section-4.5.3.1">4.5.3.1</a> Size limits and minimums ................................. <a href="#page-54">54</a> + <a href="#section-4.5.3.2">4.5.3.2</a> Timeouts ................................................. <a href="#page-56">56</a> + <a href="#section-4.5.4">4.5.4</a> Retry Strategies ........................................... <a href="#page-57">57</a> + <a href="#section-4.5.4.1">4.5.4.1</a> Sending Strategy ......................................... <a href="#page-58">58</a> + <a href="#section-4.5.4.2">4.5.4.2</a> Receiving Strategy ....................................... <a href="#page-59">59</a> + <a href="#section-4.5.5">4.5.5</a> Messages with a null reverse-path .......................... <a href="#page-59">59</a> + <a href="#section-5">5</a>. Address Resolution and Mail Handling .......................... <a href="#page-60">60</a> + <a href="#section-6">6</a>. Problem Detection and Handling ................................ <a href="#page-62">62</a> + <a href="#section-6.1">6.1</a> Reliable Delivery and Replies by Email ....................... <a href="#page-62">62</a> + <a href="#section-6.2">6.2</a> Loop Detection ............................................... <a href="#page-63">63</a> + <a href="#section-6.3">6.3</a> Compensating for Irregularities .............................. <a href="#page-63">63</a> + <a href="#section-7">7</a>. Security Considerations ....................................... <a href="#page-64">64</a> + <a href="#section-7.1">7.1</a> Mail Security and Spoofing ................................... <a href="#page-64">64</a> + <a href="#section-7.2">7.2</a> "Blind" Copies ............................................... <a href="#page-65">65</a> + <a href="#section-7.3">7.3</a> VRFY, EXPN, and Security ..................................... <a href="#page-65">65</a> + <a href="#section-7.4">7.4</a> Information Disclosure in Announcements ...................... <a href="#page-66">66</a> + <a href="#section-7.5">7.5</a> Information Disclosure in Trace Fields ....................... <a href="#page-66">66</a> + <a href="#section-7.6">7.6</a> Information Disclosure in Message Forwarding ................. <a href="#page-67">67</a> + <a href="#section-7.7">7.7</a> Scope of Operation of SMTP Servers ........................... <a href="#page-67">67</a> + <a href="#section-8">8</a>. IANA Considerations ........................................... <a href="#page-67">67</a> + <a href="#section-9">9</a>. References .................................................... <a href="#page-68">68</a> + <a href="#section-10">10</a>. Editor's Address ............................................. <a href="#page-70">70</a> + <a href="#section-11">11</a>. Acknowledgments .............................................. <a href="#page-70">70</a> + Appendices ....................................................... <a href="#page-71">71</a> + <a href="#appendix-A">A</a>. TCP Transport Service ......................................... <a href="#page-71">71</a> + <a href="#appendix-B">B</a>. Generating SMTP Commands from <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> Headers ................. <a href="#page-71">71</a> + <a href="#appendix-C">C</a>. Source Routes ................................................. <a href="#page-72">72</a> + <a href="#appendix-D">D</a>. Scenarios ..................................................... <a href="#page-73">73</a> + <a href="#appendix-E">E</a>. Other Gateway Issues .......................................... <a href="#page-76">76</a> + <a href="#appendix-F">F</a>. Deprecated Features of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> ................................ <a href="#page-76">76</a> + Full Copyright Statement ......................................... <a href="#page-79">79</a> + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</h2></span> + + The objective of the Simple Mail Transfer Protocol (SMTP) is to + transfer mail reliably and efficiently. + + SMTP is independent of the particular transmission subsystem and + requires only a reliable ordered data stream channel. While this + document specifically discusses transport over TCP, other transports + are possible. Appendices to <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> describe some of them. + + An important feature of SMTP is its capability to transport mail + across networks, usually referred to as "SMTP mail relaying" (see + <a href="#section-3.8">section 3.8</a>). A network consists of the mutually-TCP-accessible + hosts on the public Internet, the mutually-TCP-accessible hosts on a + firewall-isolated TCP/IP Intranet, or hosts in some other LAN or WAN + environment utilizing a non-TCP transport-level protocol. Using + + + +<span class="grey">Klensin Standards Track [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + SMTP, a process can transfer mail to another process on the same + network or to some other network via a relay or gateway process + accessible to both networks. + + In this way, a mail message may pass through a number of intermediate + relay or gateway hosts on its path from sender to ultimate recipient. + The Mail eXchanger mechanisms of the domain name system [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>, <a href="#ref-27" title='"Mail routing and the domain system"'>27</a>] (and + <a href="#section-5">section 5</a> of this document) are used to identify the appropriate + next-hop destination for a message being transported. + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. The SMTP Model</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-2.1" href="#section-2.1">2.1</a> Basic Structure</h3></span> + + The SMTP design can be pictured as: + + +----------+ +----------+ + +------+ | | | | + | User |<-->| | SMTP | | + +------+ | Client- |Commands/Replies| Server- | + +------+ | SMTP |<-------------->| SMTP | +------+ + | File |<-->| | and Mail | |<-->| File | + |System| | | | | |System| + +------+ +----------+ +----------+ +------+ + SMTP client SMTP server + + When an SMTP client has a message to transmit, it establishes a two- + way transmission channel to an SMTP server. The responsibility of an + SMTP client is to transfer mail messages to one or more SMTP servers, + or report its failure to do so. + + The means by which a mail message is presented to an SMTP client, and + how that client determines the domain name(s) to which mail messages + are to be transferred is a local matter, and is not addressed by this + document. In some cases, the domain name(s) transferred to, or + determined by, an SMTP client will identify the final destination(s) + of the mail message. In other cases, common with SMTP clients + associated with implementations of the POP [<a href="#ref-3" title='"Post Office Protocol - version 2"'>3</a>, <a href="#ref-26" title='"Post Office Protocol - Version 3"'>26</a>] or IMAP [<a href="#ref-6" title='"Internet Message Access Protocol - Version 4"'>6</a>] + protocols, or when the SMTP client is inside an isolated transport + service environment, the domain name determined will identify an + intermediate destination through which all mail messages are to be + relayed. SMTP clients that transfer all traffic, regardless of the + target domain names associated with the individual messages, or that + do not maintain queues for retrying message transmissions that + initially cannot be completed, may otherwise conform to this + specification but are not considered fully-capable. Fully-capable + SMTP implementations, including the relays used by these less capable + + + + +<span class="grey">Klensin Standards Track [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + ones, and their destinations, are expected to support all of the + queuing, retrying, and alternate address functions discussed in this + specification. + + The means by which an SMTP client, once it has determined a target + domain name, determines the identity of an SMTP server to which a + copy of a message is to be transferred, and then performs that + transfer, is covered by this document. To effect a mail transfer to + an SMTP server, an SMTP client establishes a two-way transmission + channel to that SMTP server. An SMTP client determines the address + of an appropriate host running an SMTP server by resolving a + destination domain name to either an intermediate Mail eXchanger host + or a final target host. + + An SMTP server may be either the ultimate destination or an + intermediate "relay" (that is, it may assume the role of an SMTP + client after receiving the message) or "gateway" (that is, it may + transport the message further using some protocol other than SMTP). + SMTP commands are generated by the SMTP client and sent to the SMTP + server. SMTP replies are sent from the SMTP server to the SMTP + client in response to the commands. + + In other words, message transfer can occur in a single connection + between the original SMTP-sender and the final SMTP-recipient, or can + occur in a series of hops through intermediary systems. In either + case, a formal handoff of responsibility for the message occurs: the + protocol requires that a server accept responsibility for either + delivering a message or properly reporting the failure to do so. + + Once the transmission channel is established and initial handshaking + completed, the SMTP client normally initiates a mail transaction. + Such a transaction consists of a series of commands to specify the + originator and destination of the mail and transmission of the + message content (including any headers or other structure) itself. + When the same message is sent to multiple recipients, this protocol + encourages the transmission of only one copy of the data for all + recipients at the same destination (or intermediate relay) host. + + The server responds to each command with a reply; replies may + indicate that the command was accepted, that additional commands are + expected, or that a temporary or permanent error condition exists. + Commands specifying the sender or recipients may include server- + permitted SMTP service extension requests as discussed in <a href="#section-2.2">section</a> + <a href="#section-2.2">2.2</a>. The dialog is purposely lock-step, one-at-a-time, although this + can be modified by mutually-agreed extension requests such as command + pipelining [<a href="#ref-13" title='"SMTP Service Extension for Command Pipelining"'>13</a>]. + + + + + +<span class="grey">Klensin Standards Track [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + Once a given mail message has been transmitted, the client may either + request that the connection be shut down or may initiate other mail + transactions. In addition, an SMTP client may use a connection to an + SMTP server for ancillary services such as verification of email + addresses or retrieval of mailing list subscriber addresses. + + As suggested above, this protocol provides mechanisms for the + transmission of mail. This transmission normally occurs directly + from the sending user's host to the receiving user's host when the + two hosts are connected to the same transport service. When they are + not connected to the same transport service, transmission occurs via + one or more relay SMTP servers. An intermediate host that acts as + either an SMTP relay or as a gateway into some other transmission + environment is usually selected through the use of the domain name + service (DNS) Mail eXchanger mechanism. + + Usually, intermediate hosts are determined via the DNS MX record, not + by explicit "source" routing (see <a href="#section-5">section 5</a> and appendices C and + F.2). + +<span class="h3"><h3><a class="selflink" name="section-2.2" href="#section-2.2">2.2</a> The Extension Model</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-2.2.1" href="#section-2.2.1">2.2.1</a> Background</h4></span> + + In an effort that started in 1990, approximately a decade after <a href="http://tools.ietf.org/html/rfc821">RFC</a> + <a href="http://tools.ietf.org/html/rfc821">821</a> was completed, the protocol was modified with a "service + extensions" model that permits the client and server to agree to + utilize shared functionality beyond the original SMTP requirements. + The SMTP extension mechanism defines a means whereby an extended SMTP + client and server may recognize each other, and the server can inform + the client as to the service extensions that it supports. + + Contemporary SMTP implementations MUST support the basic extension + mechanisms. For instance, servers MUST support the EHLO command even + if they do not implement any specific extensions and clients SHOULD + preferentially utilize EHLO rather than HELO. (However, for + compatibility with older conforming implementations, SMTP clients and + servers MUST support the original HELO mechanisms as a fallback.) + Unless the different characteristics of HELO must be identified for + interoperability purposes, this document discusses only EHLO. + + SMTP is widely deployed and high-quality implementations have proven + to be very robust. However, the Internet community now considers + some services to be important that were not anticipated when the + protocol was first designed. If support for those services is to be + added, it must be done in a way that permits older implementations to + continue working acceptably. The extension framework consists of: + + + + +<span class="grey">Klensin Standards Track [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + - The SMTP command EHLO, superseding the earlier HELO, + + - a registry of SMTP service extensions, + + - additional parameters to the SMTP MAIL and RCPT commands, and + + - optional replacements for commands defined in this protocol, such + as for DATA in non-ASCII transmissions [<a href="#ref-33" title='"SMTP Service Extensions for Transmission of Large and Binary MIME Messages"'>33</a>]. + + SMTP's strength comes primarily from its simplicity. Experience with + many protocols has shown that protocols with few options tend towards + ubiquity, whereas protocols with many options tend towards obscurity. + + Each and every extension, regardless of its benefits, must be + carefully scrutinized with respect to its implementation, deployment, + and interoperability costs. In many cases, the cost of extending the + SMTP service will likely outweigh the benefit. + +<span class="h4"><h4><a class="selflink" name="section-2.2.2" href="#section-2.2.2">2.2.2</a> Definition and Registration of Extensions</h4></span> + + The IANA maintains a registry of SMTP service extensions. A + corresponding EHLO keyword value is associated with each extension. + Each service extension registered with the IANA must be defined in a + formal standards-track or IESG-approved experimental protocol + document. The definition must include: + + - the textual name of the SMTP service extension; + + - the EHLO keyword value associated with the extension; + + - the syntax and possible values of parameters associated with the + EHLO keyword value; + + - any additional SMTP verbs associated with the extension + (additional verbs will usually be, but are not required to be, the + same as the EHLO keyword value); + + - any new parameters the extension associates with the MAIL or RCPT + verbs; + + - a description of how support for the extension affects the + behavior of a server and client SMTP; and, + + - the increment by which the extension is increasing the maximum + length of the commands MAIL and/or RCPT, over that specified in + this standard. + + + + + +<span class="grey">Klensin Standards Track [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + In addition, any EHLO keyword value starting with an upper or lower + case "X" refers to a local SMTP service extension used exclusively + through bilateral agreement. Keywords beginning with "X" MUST NOT be + used in a registered service extension. Conversely, keyword values + presented in the EHLO response that do not begin with "X" MUST + correspond to a standard, standards-track, or IESG-approved + experimental SMTP service extension registered with IANA. A + conforming server MUST NOT offer non-"X"-prefixed keyword values that + are not described in a registered extension. + + Additional verbs and parameter names are bound by the same rules as + EHLO keywords; specifically, verbs beginning with "X" are local + extensions that may not be registered or standardized. Conversely, + verbs not beginning with "X" must always be registered. + +<span class="h3"><h3><a class="selflink" name="section-2.3" href="#section-2.3">2.3</a> Terminology</h3></span> + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described below. + + 1. MUST This word, or the terms "REQUIRED" or "SHALL", mean that + the definition is an absolute requirement of the specification. + + 2. MUST NOT This phrase, or the phrase "SHALL NOT", mean that the + definition is an absolute prohibition of the specification. + + 3. SHOULD This word, or the adjective "RECOMMENDED", mean that + there may exist valid reasons in particular circumstances to + ignore a particular item, but the full implications must be + understood and carefully weighed before choosing a different + course. + + 4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean + that there may exist valid reasons in particular circumstances + when the particular behavior is acceptable or even useful, but the + full implications should be understood and the case carefully + weighed before implementing any behavior described with this + label. + + 5. MAY This word, or the adjective "OPTIONAL", mean that an item is + truly optional. One vendor may choose to include the item because + a particular marketplace requires it or because the vendor feels + that it enhances the product while another vendor may omit the + same item. An implementation which does not include a particular + option MUST be prepared to interoperate with another + implementation which does include the option, though perhaps with + reduced functionality. In the same vein an implementation which + + + +<span class="grey">Klensin Standards Track [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + does include a particular option MUST be prepared to interoperate + with another implementation which does not include the option + (except, of course, for the feature the option provides.) + +<span class="h4"><h4><a class="selflink" name="section-2.3.1" href="#section-2.3.1">2.3.1</a> Mail Objects</h4></span> + + SMTP transports a mail object. A mail object contains an envelope + and content. + + The SMTP envelope is sent as a series of SMTP protocol units + (described in <a href="#section-3">section 3</a>). It consists of an originator address (to + which error reports should be directed); one or more recipient + addresses; and optional protocol extension material. Historically, + variations on the recipient address specification command (RCPT TO) + could be used to specify alternate delivery modes, such as immediate + display; those variations have now been deprecated (see <a href="#appendix-F">appendix F</a>, + section F.6). + + The SMTP content is sent in the SMTP DATA protocol unit and has two + parts: the headers and the body. If the content conforms to other + contemporary standards, the headers form a collection of field/value + pairs structured as in the message format specification [<a href="#ref-32" title='"Internet Message Format"'>32</a>]; the + body, if structured, is defined according to MIME [<a href="#ref-12" title='"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"'>12</a>]. The content + is textual in nature, expressed using the US-ASCII repertoire [<a href="#ref-1" title='"USA Code for Information Interchange"'>1</a>]. + Although SMTP extensions (such as "8BITMIME" [<a href="#ref-20" title='"SMTP Service Extension for 8bit-MIMEtransport"'>20</a>]) may relax this + restriction for the content body, the content headers are always + encoded using the US-ASCII repertoire. A MIME extension [<a href="#ref-23" title='"MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text"'>23</a>] defines + an algorithm for representing header values outside the US-ASCII + repertoire, while still encoding them using the US-ASCII repertoire. + +<span class="h4"><h4><a class="selflink" name="section-2.3.2" href="#section-2.3.2">2.3.2</a> Senders and Receivers</h4></span> + + In <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>, the two hosts participating in an SMTP transaction were + described as the "SMTP-sender" and "SMTP-receiver". This document + has been changed to reflect current industry terminology and hence + refers to them as the "SMTP client" (or sometimes just "the client") + and "SMTP server" (or just "the server"), respectively. Since a + given host may act both as server and client in a relay situation, + "receiver" and "sender" terminology is still used where needed for + clarity. + +<span class="h4"><h4><a class="selflink" name="section-2.3.3" href="#section-2.3.3">2.3.3</a> Mail Agents and Message Stores</h4></span> + + Additional mail system terminology became common after <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> was + published and, where convenient, is used in this specification. In + particular, SMTP servers and clients provide a mail transport service + and therefore act as "Mail Transfer Agents" (MTAs). "Mail User + Agents" (MUAs or UAs) are normally thought of as the sources and + + + +<span class="grey">Klensin Standards Track [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + targets of mail. At the source, an MUA might collect mail to be + transmitted from a user and hand it off to an MTA; the final + ("delivery") MTA would be thought of as handing the mail off to an + MUA (or at least transferring responsibility to it, e.g., by + depositing the message in a "message store"). However, while these + terms are used with at least the appearance of great precision in + other environments, the implied boundaries between MUAs and MTAs + often do not accurately match common, and conforming, practices with + Internet mail. Hence, the reader should be cautious about inferring + the strong relationships and responsibilities that might be implied + if these terms were used elsewhere. + +<span class="h4"><h4><a class="selflink" name="section-2.3.4" href="#section-2.3.4">2.3.4</a> Host</h4></span> + + For the purposes of this specification, a host is a computer system + attached to the Internet (or, in some cases, to a private TCP/IP + network) and supporting the SMTP protocol. Hosts are known by names + (see "domain"); identifying them by numerical address is discouraged. + +<span class="h4"><h4><a class="selflink" name="section-2.3.5" href="#section-2.3.5">2.3.5</a> Domain</h4></span> + + A domain (or domain name) consists of one or more dot-separated + components. These components ("labels" in DNS terminology [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>]) are + restricted for SMTP purposes to consist of a sequence of letters, + digits, and hyphens drawn from the ASCII character set [<a href="#ref-1" title='"USA Code for Information Interchange"'>1</a>]. Domain + names are used as names of hosts and of other entities in the domain + name hierarchy. For example, a domain may refer to an alias (label + of a CNAME RR) or the label of Mail eXchanger records to be used to + deliver mail instead of representing a host name. See [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>] and + <a href="#section-5">section 5</a> of this specification. + + The domain name, as described in this document and in [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>], is the + entire, fully-qualified name (often referred to as an "FQDN"). A + domain name that is not in FQDN form is no more than a local alias. + Local aliases MUST NOT appear in any SMTP transaction. + +<span class="h4"><h4><a class="selflink" name="section-2.3.6" href="#section-2.3.6">2.3.6</a> Buffer and State Table</h4></span> + + SMTP sessions are stateful, with both parties carefully maintaining a + common view of the current state. In this document we model this + state by a virtual "buffer" and a "state table" on the server which + may be used by the client to, for example, "clear the buffer" or + "reset the state table," causing the information in the buffer to be + discarded and the state to be returned to some previous state. + + + + + + + +<span class="grey">Klensin Standards Track [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h4"><h4><a class="selflink" name="section-2.3.7" href="#section-2.3.7">2.3.7</a> Lines</h4></span> + + SMTP commands and, unless altered by a service extension, message + data, are transmitted in "lines". Lines consist of zero or more data + characters terminated by the sequence ASCII character "CR" (hex value + 0D) followed immediately by ASCII character "LF" (hex value 0A). + This termination sequence is denoted as <CRLF> in this document. + Conforming implementations MUST NOT recognize or generate any other + character or character sequence as a line terminator. Limits MAY be + imposed on line lengths by servers (see <a href="#section-4.5.3">section 4.5.3</a>). + + In addition, the appearance of "bare" "CR" or "LF" characters in text + (i.e., either without the other) has a long history of causing + problems in mail implementations and applications that use the mail + system as a tool. SMTP client implementations MUST NOT transmit + these characters except when they are intended as line terminators + and then MUST, as indicated above, transmit them only as a <CRLF> + sequence. + +<span class="h4"><h4><a class="selflink" name="section-2.3.8" href="#section-2.3.8">2.3.8</a> Originator, Delivery, Relay, and Gateway Systems</h4></span> + + This specification makes a distinction among four types of SMTP + systems, based on the role those systems play in transmitting + electronic mail. An "originating" system (sometimes called an SMTP + originator) introduces mail into the Internet or, more generally, + into a transport service environment. A "delivery" SMTP system is + one that receives mail from a transport service environment and + passes it to a mail user agent or deposits it in a message store + which a mail user agent is expected to subsequently access. A + "relay" SMTP system (usually referred to just as a "relay") receives + mail from an SMTP client and transmits it, without modification to + the message data other than adding trace information, to another SMTP + server for further relaying or for delivery. + + A "gateway" SMTP system (usually referred to just as a "gateway") + receives mail from a client system in one transport environment and + transmits it to a server system in another transport environment. + Differences in protocols or message semantics between the transport + environments on either side of a gateway may require that the gateway + system perform transformations to the message that are not permitted + to SMTP relay systems. For the purposes of this specification, + firewalls that rewrite addresses should be considered as gateways, + even if SMTP is used on both sides of them (see [<a href="#ref-11" title='"Behavior of and Requirements for Internet Firewalls"'>11</a>]). + + + + + + + + +<span class="grey">Klensin Standards Track [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h4"><h4><a class="selflink" name="section-2.3.9" href="#section-2.3.9">2.3.9</a> Message Content and Mail Data</h4></span> + + The terms "message content" and "mail data" are used interchangeably + in this document to describe the material transmitted after the DATA + command is accepted and before the end of data indication is + transmitted. Message content includes message headers and the + possibly-structured message body. The MIME specification [<a href="#ref-12" title='"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"'>12</a>] + provides the standard mechanisms for structured message bodies. + +<span class="h4"><h4><a class="selflink" name="section-2.3.10" href="#section-2.3.10">2.3.10</a> Mailbox and Address</h4></span> + + As used in this specification, an "address" is a character string + that identifies a user to whom mail will be sent or a location into + which mail will be deposited. The term "mailbox" refers to that + depository. The two terms are typically used interchangeably unless + the distinction between the location in which mail is placed (the + mailbox) and a reference to it (the address) is important. An + address normally consists of user and domain specifications. The + standard mailbox naming convention is defined to be "local- + part@domain": contemporary usage permits a much broader set of + applications than simple "user names". Consequently, and due to a + long history of problems when intermediate hosts have attempted to + optimize transport by modifying them, the local-part MUST be + interpreted and assigned semantics only by the host specified in the + domain part of the address. + +<span class="h4"><h4><a class="selflink" name="section-2.3.11" href="#section-2.3.11">2.3.11</a> Reply</h4></span> + + An SMTP reply is an acknowledgment (positive or negative) sent from + receiver to sender via the transmission channel in response to a + command. The general form of a reply is a numeric completion code + (indicating failure or success) usually followed by a text string. + The codes are for use by programs and the text is usually intended + for human users. Recent work [<a href="#ref-34" title='"Enhanced Mail System Status Codes"'>34</a>] has specified further structuring + of the reply strings, including the use of supplemental and more + specific completion codes. + +<span class="h3"><h3><a class="selflink" name="section-2.4" href="#section-2.4">2.4</a> General Syntax Principles and Transaction Model</h3></span> + + SMTP commands and replies have a rigid syntax. All commands begin + with a command verb. All Replies begin with a three digit numeric + code. In some commands and replies, arguments MUST follow the verb + or reply code. Some commands do not accept arguments (after the + verb), and some reply codes are followed, sometimes optionally, by + free form text. In both cases, where text appears, it is separated + from the verb or reply code by a space character. Complete + definitions of commands and replies appear in <a href="#section-4">section 4</a>. + + + + +<span class="grey">Klensin Standards Track [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + Verbs and argument values (e.g., "TO:" or "to:" in the RCPT command + and extension name keywords) are not case sensitive, with the sole + exception in this specification of a mailbox local-part (SMTP + Extensions may explicitly specify case-sensitive elements). That is, + a command verb, an argument value other than a mailbox local-part, + and free form text MAY be encoded in upper case, lower case, or any + mixture of upper and lower case with no impact on its meaning. This + is NOT true of a mailbox local-part. The local-part of a mailbox + MUST BE treated as case sensitive. Therefore, SMTP implementations + MUST take care to preserve the case of mailbox local-parts. Mailbox + domains are not case sensitive. In particular, for some hosts the + user "smith" is different from the user "Smith". However, exploiting + the case sensitivity of mailbox local-parts impedes interoperability + and is discouraged. + + A few SMTP servers, in violation of this specification (and <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>) + require that command verbs be encoded by clients in upper case. + Implementations MAY wish to employ this encoding to accommodate those + servers. + + The argument field consists of a variable length character string + ending with the end of the line, i.e., with the character sequence + <CRLF>. The receiver will take no action until this sequence is + received. + + The syntax for each command is shown with the discussion of that + command. Common elements and parameters are shown in <a href="#section-4.1.2">section 4.1.2</a>. + + Commands and replies are composed of characters from the ASCII + character set [<a href="#ref-1" title='"USA Code for Information Interchange"'>1</a>]. When the transport service provides an 8-bit byte + (octet) transmission channel, each 7-bit character is transmitted + right justified in an octet with the high order bit cleared to zero. + More specifically, the unextended SMTP service provides seven bit + transport only. An originating SMTP client which has not + successfully negotiated an appropriate extension with a particular + server MUST NOT transmit messages with information in the high-order + bit of octets. If such messages are transmitted in violation of this + rule, receiving SMTP servers MAY clear the high-order bit or reject + the message as invalid. In general, a relay SMTP SHOULD assume that + the message content it has received is valid and, assuming that the + envelope permits doing so, relay it without inspecting that content. + Of course, if the content is mislabeled and the data path cannot + accept the actual content, this may result in ultimate delivery of a + severely garbled message to the recipient. Delivery SMTP systems MAY + reject ("bounce") such messages rather than deliver them. No sending + SMTP system is permitted to send envelope commands in any character + + + + + +<span class="grey">Klensin Standards Track [Page 14]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + set other than US-ASCII; receiving systems SHOULD reject such + commands, normally using "500 syntax error - invalid character" + replies. + + Eight-bit message content transmission MAY be requested of the server + by a client using extended SMTP facilities, notably the "8BITMIME" + extension [<a href="#ref-20" title='"SMTP Service Extension for 8bit-MIMEtransport"'>20</a>]. 8BITMIME SHOULD be supported by SMTP servers. + However, it MUST not be construed as authorization to transmit + unrestricted eight bit material. 8BITMIME MUST NOT be requested by + senders for material with the high bit on that is not in MIME format + with an appropriate content-transfer encoding; servers MAY reject + such messages. + + The metalinguistic notation used in this document corresponds to the + "Augmented BNF" used in other Internet mail system documents. The + reader who is not familiar with that syntax should consult the ABNF + specification [<a href="#ref-8" title='"Augmented BNF for Syntax Specifications: ABNF"'>8</a>]. Metalanguage terms used in running text are + surrounded by pointed brackets (e.g., <CRLF>) for clarity. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. The SMTP Procedures: An Overview</h2></span> + + This section contains descriptions of the procedures used in SMTP: + session initiation, the mail transaction, forwarding mail, verifying + mailbox names and expanding mailing lists, and the opening and + closing exchanges. Comments on relaying, a note on mail domains, and + a discussion of changing roles are included at the end of this + section. Several complete scenarios are presented in <a href="#appendix-D">appendix D</a>. + +<span class="h3"><h3><a class="selflink" name="section-3.1" href="#section-3.1">3.1</a> Session Initiation</h3></span> + + An SMTP session is initiated when a client opens a connection to a + server and the server responds with an opening message. + + SMTP server implementations MAY include identification of their + software and version information in the connection greeting reply + after the 220 code, a practice that permits more efficient isolation + and repair of any problems. Implementations MAY make provision for + SMTP servers to disable the software and version announcement where + it causes security concerns. While some systems also identify their + contact point for mail problems, this is not a substitute for + maintaining the required "postmaster" address (see <a href="#section-4.5.1">section 4.5.1</a>). + + The SMTP protocol allows a server to formally reject a transaction + while still allowing the initial connection as follows: a 554 + response MAY be given in the initial connection opening message + instead of the 220. A server taking this approach MUST still wait + for the client to send a QUIT (see <a href="#section-4.1.1.10">section 4.1.1.10</a>) before closing + the connection and SHOULD respond to any intervening commands with + + + +<span class="grey">Klensin Standards Track [Page 15]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + "503 bad sequence of commands". Since an attempt to make an SMTP + connection to such a system is probably in error, a server returning + a 554 response on connection opening SHOULD provide enough + information in the reply text to facilitate debugging of the sending + system. + +<span class="h3"><h3><a class="selflink" name="section-3.2" href="#section-3.2">3.2</a> Client Initiation</h3></span> + + Once the server has sent the welcoming message and the client has + received it, the client normally sends the EHLO command to the + server, indicating the client's identity. In addition to opening the + session, use of EHLO indicates that the client is able to process + service extensions and requests that the server provide a list of the + extensions it supports. Older SMTP systems which are unable to + support service extensions and contemporary clients which do not + require service extensions in the mail session being initiated, MAY + use HELO instead of EHLO. Servers MUST NOT return the extended + EHLO-style response to a HELO command. For a particular connection + attempt, if the server returns a "command not recognized" response to + EHLO, the client SHOULD be able to fall back and send HELO. + + In the EHLO command the host sending the command identifies itself; + the command may be interpreted as saying "Hello, I am <domain>" (and, + in the case of EHLO, "and I support service extension requests"). + +<span class="h3"><h3><a class="selflink" name="section-3.3" href="#section-3.3">3.3</a> Mail Transactions</h3></span> + + There are three steps to SMTP mail transactions. The transaction + starts with a MAIL command which gives the sender identification. + (In general, the MAIL command may be sent only when no mail + transaction is in progress; see <a href="#section-4.1.4">section 4.1.4</a>.) A series of one or + more RCPT commands follows giving the receiver information. Then a + DATA command initiates transfer of the mail data and is terminated by + the "end of mail" data indicator, which also confirms the + transaction. + + The first step in the procedure is the MAIL command. + + MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF> + + This command tells the SMTP-receiver that a new mail transaction is + starting and to reset all its state tables and buffers, including any + recipients or mail data. The <reverse-path> portion of the first or + only argument contains the source mailbox (between "<" and ">" + brackets), which can be used to report errors (see <a href="#section-4.2">section 4.2</a> for a + discussion of error reporting). If accepted, the SMTP server returns + a 250 OK reply. If the mailbox specification is not acceptable for + some reason, the server MUST return a reply indicating whether the + + + +<span class="grey">Klensin Standards Track [Page 16]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + failure is permanent (i.e., will occur again if the client tries to + send the same address again) or temporary (i.e., the address might be + accepted if the client tries again later). Despite the apparent + scope of this requirement, there are circumstances in which the + acceptability of the reverse-path may not be determined until one or + more forward-paths (in RCPT commands) can be examined. In those + cases, the server MAY reasonably accept the reverse-path (with a 250 + reply) and then report problems after the forward-paths are received + and examined. Normally, failures produce 550 or 553 replies. + + Historically, the <reverse-path> can contain more than just a + mailbox, however, contemporary systems SHOULD NOT use source routing + (see <a href="#appendix-C">appendix C</a>). + + The optional <mail-parameters> are associated with negotiated SMTP + service extensions (see <a href="#section-2.2">section 2.2</a>). + + The second step in the procedure is the RCPT command. + + RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF> + + The first or only argument to this command includes a forward-path + (normally a mailbox and domain, always surrounded by "<" and ">" + brackets) identifying one recipient. If accepted, the SMTP server + returns a 250 OK reply and stores the forward-path. If the recipient + is known not to be a deliverable address, the SMTP server returns a + 550 reply, typically with a string such as "no such user - " and the + mailbox name (other circumstances and reply codes are possible). + This step of the procedure can be repeated any number of times. + + The <forward-path> can contain more than just a mailbox. + Historically, the <forward-path> can be a source routing list of + hosts and the destination mailbox, however, contemporary SMTP clients + SHOULD NOT utilize source routes (see <a href="#appendix-C">appendix C</a>). Servers MUST be + prepared to encounter a list of source routes in the forward path, + but SHOULD ignore the routes or MAY decline to support the relaying + they imply. Similarly, servers MAY decline to accept mail that is + destined for other hosts or systems. These restrictions make a + server useless as a relay for clients that do not support full SMTP + functionality. Consequently, restricted-capability clients MUST NOT + assume that any SMTP server on the Internet can be used as their mail + processing (relaying) site. If a RCPT command appears without a + previous MAIL command, the server MUST return a 503 "Bad sequence of + commands" response. The optional <rcpt-parameters> are associated + with negotiated SMTP service extensions (see <a href="#section-2.2">section 2.2</a>). + + The third step in the procedure is the DATA command (or some + alternative specified in a service extension). + + + +<span class="grey">Klensin Standards Track [Page 17]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + DATA <CRLF> + + If accepted, the SMTP server returns a 354 Intermediate reply and + considers all succeeding lines up to but not including the end of + mail data indicator to be the message text. When the end of text is + successfully received and stored the SMTP-receiver sends a 250 OK + reply. + + Since the mail data is sent on the transmission channel, the end of + mail data must be indicated so that the command and reply dialog can + be resumed. SMTP indicates the end of the mail data by sending a + line containing only a "." (period or full stop). A transparency + procedure is used to prevent this from interfering with the user's + text (see <a href="#section-4.5.2">section 4.5.2</a>). + + The end of mail data indicator also confirms the mail transaction and + tells the SMTP server to now process the stored recipients and mail + data. If accepted, the SMTP server returns a 250 OK reply. The DATA + command can fail at only two points in the protocol exchange: + + - If there was no MAIL, or no RCPT, command, or all such commands + were rejected, the server MAY return a "command out of sequence" + (503) or "no valid recipients" (554) reply in response to the DATA + command. If one of those replies (or any other 5yz reply) is + received, the client MUST NOT send the message data; more + generally, message data MUST NOT be sent unless a 354 reply is + received. + + - If the verb is initially accepted and the 354 reply issued, the + DATA command should fail only if the mail transaction was + incomplete (for example, no recipients), or if resources were + unavailable (including, of course, the server unexpectedly + becoming unavailable), or if the server determines that the + message should be rejected for policy or other reasons. + + However, in practice, some servers do not perform recipient + verification until after the message text is received. These servers + SHOULD treat a failure for one or more recipients as a "subsequent + failure" and return a mail message as discussed in <a href="#section-6">section 6</a>. Using + a "550 mailbox not found" (or equivalent) reply code after the data + are accepted makes it difficult or impossible for the client to + determine which recipients failed. + + When <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> format [<a href="#ref-7" title='"Standard for the Format of ARPA Internet Text Messages"'>7</a>, <a href="#ref-32" title='"Internet Message Format"'>32</a>] is being used, the mail data include the + memo header items such as Date, Subject, To, Cc, From. Server SMTP + systems SHOULD NOT reject messages based on perceived defects in the + <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> or MIME [<a href="#ref-12" title='"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"'>12</a>] message header or message body. In particular, + + + + +<span class="grey">Klensin Standards Track [Page 18]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + they MUST NOT reject messages in which the numbers of Resent-fields + do not match or Resent-to appears without Resent-from and/or Resent- + date. + + Mail transaction commands MUST be used in the order discussed above. + +<span class="h3"><h3><a class="selflink" name="section-3.4" href="#section-3.4">3.4</a> Forwarding for Address Correction or Updating</h3></span> + + Forwarding support is most often required to consolidate and simplify + addresses within, or relative to, some enterprise and less frequently + to establish addresses to link a person's prior address with current + one. Silent forwarding of messages (without server notification to + the sender), for security or non-disclosure purposes, is common in + the contemporary Internet. + + In both the enterprise and the "new address" cases, information + hiding (and sometimes security) considerations argue against exposure + of the "final" address through the SMTP protocol as a side-effect of + the forwarding activity. This may be especially important when the + final address may not even be reachable by the sender. Consequently, + the "forwarding" mechanisms described in <a href="http://tools.ietf.org/html/rfc821#section-3.2">section 3.2 of RFC 821</a>, and + especially the 251 (corrected destination) and 551 reply codes from + RCPT must be evaluated carefully by implementers and, when they are + available, by those configuring systems. + + In particular: + + * Servers MAY forward messages when they are aware of an address + change. When they do so, they MAY either provide address-updating + information with a 251 code, or may forward "silently" and return + a 250 code. But, if a 251 code is used, they MUST NOT assume that + the client will actually update address information or even return + that information to the user. + + Alternately, + + * Servers MAY reject or bounce messages when they are not + deliverable when addressed. When they do so, they MAY either + provide address-updating information with a 551 code, or may + reject the message as undeliverable with a 550 code and no + address-specific information. But, if a 551 code is used, they + MUST NOT assume that the client will actually update address + information or even return that information to the user. + + SMTP server implementations that support the 251 and/or 551 reply + codes are strongly encouraged to provide configuration mechanisms so + that sites which conclude that they would undesirably disclose + information can disable or restrict their use. + + + +<span class="grey">Klensin Standards Track [Page 19]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-20" id="page-20" href="#page-20" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h3"><h3><a class="selflink" name="section-3.5" href="#section-3.5">3.5</a> Commands for Debugging Addresses</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-3.5.1" href="#section-3.5.1">3.5.1</a> Overview</h4></span> + + SMTP provides commands to verify a user name or obtain the content of + a mailing list. This is done with the VRFY and EXPN commands, which + have character string arguments. Implementations SHOULD support VRFY + and EXPN (however, see <a href="#section-3.5.2">section 3.5.2</a> and 7.3). + + For the VRFY command, the string is a user name or a user name and + domain (see below). If a normal (i.e., 250) response is returned, + the response MAY include the full name of the user and MUST include + the mailbox of the user. It MUST be in either of the following + forms: + + User Name <local-part@domain> + local-part@domain + + When a name that is the argument to VRFY could identify more than one + mailbox, the server MAY either note the ambiguity or identify the + alternatives. In other words, any of the following are legitimate + response to VRFY: + + 553 User ambiguous + + or + + 553- Ambiguous; Possibilities are + 553-Joe Smith <jsmith@foo.com> + 553-Harry Smith <hsmith@foo.com> + 553 Melvin Smith <dweep@foo.com> + + or + + 553-Ambiguous; Possibilities + 553- <jsmith@foo.com> + 553- <hsmith@foo.com> + 553 <dweep@foo.com> + + Under normal circumstances, a client receiving a 553 reply would be + expected to expose the result to the user. Use of exactly the forms + given, and the "user ambiguous" or "ambiguous" keywords, possibly + supplemented by extended reply codes such as those described in [<a href="#ref-34" title='"Enhanced Mail System Status Codes"'>34</a>], + will facilitate automated translation into other languages as needed. + Of course, a client that was highly automated or that was operating + in another language than English, might choose to try to translate + the response, to return some other indication to the user than the + + + + +<span class="grey">Klensin Standards Track [Page 20]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-21" id="page-21" href="#page-21" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + literal text of the reply, or to take some automated action such as + consulting a directory service for additional information before + reporting to the user. + + For the EXPN command, the string identifies a mailing list, and the + successful (i.e., 250) multiline response MAY include the full name + of the users and MUST give the mailboxes on the mailing list. + + In some hosts the distinction between a mailing list and an alias for + a single mailbox is a bit fuzzy, since a common data structure may + hold both types of entries, and it is possible to have mailing lists + containing only one mailbox. If a request is made to apply VRFY to a + mailing list, a positive response MAY be given if a message so + addressed would be delivered to everyone on the list, otherwise an + error SHOULD be reported (e.g., "550 That is a mailing list, not a + user" or "252 Unable to verify members of mailing list"). If a + request is made to expand a user name, the server MAY return a + positive response consisting of a list containing one name, or an + error MAY be reported (e.g., "550 That is a user name, not a mailing + list"). + + In the case of a successful multiline reply (normal for EXPN) exactly + one mailbox is to be specified on each line of the reply. The case + of an ambiguous request is discussed above. + + "User name" is a fuzzy term and has been used deliberately. An + implementation of the VRFY or EXPN commands MUST include at least + recognition of local mailboxes as "user names". However, since + current Internet practice often results in a single host handling + mail for multiple domains, hosts, especially hosts that provide this + functionality, SHOULD accept the "local-part@domain" form as a "user + name"; hosts MAY also choose to recognize other strings as "user + names". + + The case of expanding a mailbox list requires a multiline reply, such + as: + + C: EXPN Example-People + S: 250-Jon Postel <Postel@isi.edu> + S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu> + S: 250 Sam Q. Smith <SQSmith@specific.generic.com> + + or + + C: EXPN Executive-Washroom-List + S: 550 Access Denied to You. + + + + + +<span class="grey">Klensin Standards Track [Page 21]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-22" id="page-22" href="#page-22" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + The character string arguments of the VRFY and EXPN commands cannot + be further restricted due to the variety of implementations of the + user name and mailbox list concepts. On some systems it may be + appropriate for the argument of the EXPN command to be a file name + for a file containing a mailing list, but again there are a variety + of file naming conventions in the Internet. Similarly, historical + variations in what is returned by these commands are such that the + response SHOULD be interpreted very carefully, if at all, and SHOULD + generally only be used for diagnostic purposes. + +<span class="h4"><h4><a class="selflink" name="section-3.5.2" href="#section-3.5.2">3.5.2</a> VRFY Normal Response</h4></span> + + When normal (2yz or 551) responses are returned from a VRFY or EXPN + request, the reply normally includes the mailbox name, i.e., + "<local-part@domain>", where "domain" is a fully qualified domain + name, MUST appear in the syntax. In circumstances exceptional enough + to justify violating the intent of this specification, free-form text + MAY be returned. In order to facilitate parsing by both computers + and people, addresses SHOULD appear in pointed brackets. When + addresses, rather than free-form debugging information, are returned, + EXPN and VRFY MUST return only valid domain addresses that are usable + in SMTP RCPT commands. Consequently, if an address implies delivery + to a program or other system, the mailbox name used to reach that + target MUST be given. Paths (explicit source routes) MUST NOT be + returned by VRFY or EXPN. + + Server implementations SHOULD support both VRFY and EXPN. For + security reasons, implementations MAY provide local installations a + way to disable either or both of these commands through configuration + options or the equivalent. When these commands are supported, they + are not required to work across relays when relaying is supported. + Since they were both optional in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>, they MUST be listed as + service extensions in an EHLO response, if they are supported. + +<span class="h4"><h4><a class="selflink" name="section-3.5.3" href="#section-3.5.3">3.5.3</a> Meaning of VRFY or EXPN Success Response</h4></span> + + A server MUST NOT return a 250 code in response to a VRFY or EXPN + command unless it has actually verified the address. In particular, + a server MUST NOT return 250 if all it has done is to verify that the + syntax given is valid. In that case, 502 (Command not implemented) + or 500 (Syntax error, command unrecognized) SHOULD be returned. As + stated elsewhere, implementation (in the sense of actually validating + addresses and returning information) of VRFY and EXPN are strongly + recommended. Hence, implementations that return 500 or 502 for VRFY + are not in full compliance with this specification. + + + + + + +<span class="grey">Klensin Standards Track [Page 22]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-23" id="page-23" href="#page-23" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + There may be circumstances where an address appears to be valid but + cannot reasonably be verified in real time, particularly when a + server is acting as a mail exchanger for another server or domain. + "Apparent validity" in this case would normally involve at least + syntax checking and might involve verification that any domains + specified were ones to which the host expected to be able to relay + mail. In these situations, reply code 252 SHOULD be returned. These + cases parallel the discussion of RCPT verification discussed in + <a href="#section-2.1">section 2.1</a>. Similarly, the discussion in <a href="#section-3.4">section 3.4</a> applies to the + use of reply codes 251 and 551 with VRFY (and EXPN) to indicate + addresses that are recognized but that would be forwarded or bounced + were mail received for them. Implementations generally SHOULD be + more aggressive about address verification in the case of VRFY than + in the case of RCPT, even if it takes a little longer to do so. + +<span class="h4"><h4><a class="selflink" name="section-3.5.4" href="#section-3.5.4">3.5.4</a> Semantics and Applications of EXPN</h4></span> + + EXPN is often very useful in debugging and understanding problems + with mailing lists and multiple-target-address aliases. Some systems + have attempted to use source expansion of mailing lists as a means of + eliminating duplicates. The propagation of aliasing systems with + mail on the Internet, for hosts (typically with MX and CNAME DNS + records), for mailboxes (various types of local host aliases), and in + various proxying arrangements, has made it nearly impossible for + these strategies to work consistently, and mail systems SHOULD NOT + attempt them. + +<span class="h3"><h3><a class="selflink" name="section-3.6" href="#section-3.6">3.6</a> Domains</h3></span> + + Only resolvable, fully-qualified, domain names (FQDNs) are permitted + when domain names are used in SMTP. In other words, names that can + be resolved to MX RRs or A RRs (as discussed in <a href="#section-5">section 5</a>) are + permitted, as are CNAME RRs whose targets can be resolved, in turn, + to MX or A RRs. Local nicknames or unqualified names MUST NOT be + used. There are two exceptions to the rule requiring FQDNs: + + - The domain name given in the EHLO command MUST BE either a primary + host name (a domain name that resolves to an A RR) or, if the host + has no name, an address literal as described in <a href="#section-4.1.1.1">section 4.1.1.1</a>. + + - The reserved mailbox name "postmaster" may be used in a RCPT + command without domain qualification (see <a href="#section-4.1.1.3">section 4.1.1.3</a>) and + MUST be accepted if so used. + + + + + + + + +<span class="grey">Klensin Standards Track [Page 23]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-24" id="page-24" href="#page-24" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h3"><h3><a class="selflink" name="section-3.7" href="#section-3.7">3.7</a> Relaying</h3></span> + + In general, the availability of Mail eXchanger records in the domain + name system [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>, <a href="#ref-27" title='"Mail routing and the domain system"'>27</a>] makes the use of explicit source routes in the + Internet mail system unnecessary. Many historical problems with + their interpretation have made their use undesirable. SMTP clients + SHOULD NOT generate explicit source routes except under unusual + circumstances. SMTP servers MAY decline to act as mail relays or to + accept addresses that specify source routes. When route information + is encountered, SMTP servers are also permitted to ignore the route + information and simply send to the final destination specified as the + last element in the route and SHOULD do so. There has been an + invalid practice of using names that do not appear in the DNS as + destination names, with the senders counting on the intermediate + hosts specified in source routing to resolve any problems. If source + routes are stripped, this practice will cause failures. This is one + of several reasons why SMTP clients MUST NOT generate invalid source + routes or depend on serial resolution of names. + + When source routes are not used, the process described in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> for + constructing a reverse-path from the forward-path is not applicable + and the reverse-path at the time of delivery will simply be the + address that appeared in the MAIL command. + + A relay SMTP server is usually the target of a DNS MX record that + designates it, rather than the final delivery system. The relay + server may accept or reject the task of relaying the mail in the same + way it accepts or rejects mail for a local user. If it accepts the + task, it then becomes an SMTP client, establishes a transmission + channel to the next SMTP server specified in the DNS (according to + the rules in <a href="#section-5">section 5</a>), and sends it the mail. If it declines to + relay mail to a particular address for policy reasons, a 550 response + SHOULD be returned. + + Many mail-sending clients exist, especially in conjunction with + facilities that receive mail via POP3 or IMAP, that have limited + capability to support some of the requirements of this specification, + such as the ability to queue messages for subsequent delivery + attempts. For these clients, it is common practice to make private + arrangements to send all messages to a single server for processing + and subsequent distribution. SMTP, as specified here, is not ideally + suited for this role, and work is underway on standardized mail + submission protocols that might eventually supercede the current + practices. In any event, because these arrangements are private and + fall outside the scope of this specification, they are not described + here. + + + + + +<span class="grey">Klensin Standards Track [Page 24]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-25" id="page-25" href="#page-25" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + It is important to note that MX records can point to SMTP servers + which act as gateways into other environments, not just SMTP relays + and final delivery systems; see sections <a href="#section-3.8">3.8</a> and <a href="#section-5">5</a>. + + If an SMTP server has accepted the task of relaying the mail and + later finds that the destination is incorrect or that the mail cannot + be delivered for some other reason, then it MUST construct an + "undeliverable mail" notification message and send it to the + originator of the undeliverable mail (as indicated by the reverse- + path). Formats specified for non-delivery reports by other standards + (see, for example, [<a href="#ref-24" title='"SMTP Service Extension for Delivery Status Notifications"'>24</a>, <a href="#ref-25" title='"An Extensible Message Format for Delivery Status Notifications"'>25</a>]) SHOULD be used if possible. + + This notification message must be from the SMTP server at the relay + host or the host that first determines that delivery cannot be + accomplished. Of course, SMTP servers MUST NOT send notification + messages about problems transporting notification messages. One way + to prevent loops in error reporting is to specify a null reverse-path + in the MAIL command of a notification message. When such a message + is transmitted the reverse-path MUST be set to null (see <a href="#section-4.5.5">section</a> + <a href="#section-4.5.5">4.5.5</a> for additional discussion). A MAIL command with a null + reverse-path appears as follows: + + MAIL FROM:<> + + As discussed in <a href="#section-2.4.1">section 2.4.1</a>, a relay SMTP has no need to inspect or + act upon the headers or body of the message data and MUST NOT do so + except to add its own "Received:" header (<a href="#section-4.4">section 4.4</a>) and, + optionally, to attempt to detect looping in the mail system (see + <a href="#section-6.2">section 6.2</a>). + +<span class="h3"><h3><a class="selflink" name="section-3.8" href="#section-3.8">3.8</a> Mail Gatewaying</h3></span> + + While the relay function discussed above operates within the Internet + SMTP transport service environment, MX records or various forms of + explicit routing may require that an intermediate SMTP server perform + a translation function between one transport service and another. As + discussed in <a href="#section-2.3.8">section 2.3.8</a>, when such a system is at the boundary + between two transport service environments, we refer to it as a + "gateway" or "gateway SMTP". + + Gatewaying mail between different mail environments, such as + different mail formats and protocols, is complex and does not easily + yield to standardization. However, some general requirements may be + given for a gateway between the Internet and another mail + environment. + + + + + + +<span class="grey">Klensin Standards Track [Page 25]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-26" id="page-26" href="#page-26" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h4"><h4><a class="selflink" name="section-3.8.1" href="#section-3.8.1">3.8.1</a> Header Fields in Gatewaying</h4></span> + + Header fields MAY be rewritten when necessary as messages are + gatewayed across mail environment boundaries. This may involve + inspecting the message body or interpreting the local-part of the + destination address in spite of the prohibitions in <a href="#section-2.4.1">section 2.4.1</a>. + + Other mail systems gatewayed to the Internet often use a subset of + <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> headers or provide similar functionality with a different + syntax, but some of these mail systems do not have an equivalent to + the SMTP envelope. Therefore, when a message leaves the Internet + environment, it may be necessary to fold the SMTP envelope + information into the message header. A possible solution would be to + create new header fields to carry the envelope information (e.g., + "X-SMTP-MAIL:" and "X-SMTP-RCPT:"); however, this would require + changes in mail programs in foreign environments and might risk + disclosure of private information (see <a href="#section-7.2">section 7.2</a>). + +<span class="h4"><h4><a class="selflink" name="section-3.8.2" href="#section-3.8.2">3.8.2</a> Received Lines in Gatewaying</h4></span> + + When forwarding a message into or out of the Internet environment, a + gateway MUST prepend a Received: line, but it MUST NOT alter in any + way a Received: line that is already in the header. + + "Received:" fields of messages originating from other environments + may not conform exactly to this specification. However, the most + important use of Received: lines is for debugging mail faults, and + this debugging can be severely hampered by well-meaning gateways that + try to "fix" a Received: line. As another consequence of trace + fields arising in non-SMTP environments, receiving systems MUST NOT + reject mail based on the format of a trace field and SHOULD be + extremely robust in the light of unexpected information or formats in + those fields. + + The gateway SHOULD indicate the environment and protocol in the "via" + clauses of Received field(s) that it supplies. + +<span class="h4"><h4><a class="selflink" name="section-3.8.3" href="#section-3.8.3">3.8.3</a> Addresses in Gatewaying</h4></span> + + From the Internet side, the gateway SHOULD accept all valid address + formats in SMTP commands and in <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> headers, and all valid <a href="http://tools.ietf.org/html/rfc822">RFC</a> + <a href="http://tools.ietf.org/html/rfc822">822</a> messages. Addresses and headers generated by gateways MUST + conform to applicable Internet standards (including this one and <a href="http://tools.ietf.org/html/rfc822">RFC</a> + <a href="http://tools.ietf.org/html/rfc822">822</a>). Gateways are, of course, subject to the same rules for + handling source routes as those described for other SMTP systems in + <a href="#section-3.3">section 3.3</a>. + + + + + +<span class="grey">Klensin Standards Track [Page 26]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-27" id="page-27" href="#page-27" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h4"><h4><a class="selflink" name="section-3.8.4" href="#section-3.8.4">3.8.4</a> Other Header Fields in Gatewaying</h4></span> + + The gateway MUST ensure that all header fields of a message that it + forwards into the Internet mail environment meet the requirements for + Internet mail. In particular, all addresses in "From:", "To:", + "Cc:", etc., fields MUST be transformed (if necessary) to satisfy <a href="http://tools.ietf.org/html/rfc822">RFC</a> + <a href="http://tools.ietf.org/html/rfc822">822</a> syntax, MUST reference only fully-qualified domain names, and + MUST be effective and useful for sending replies. The translation + algorithm used to convert mail from the Internet protocols to another + environment's protocol SHOULD ensure that error messages from the + foreign mail environment are delivered to the return path from the + SMTP envelope, not to the sender listed in the "From:" field (or + other fields) of the <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> message. + +<span class="h4"><h4><a class="selflink" name="section-3.8.5" href="#section-3.8.5">3.8.5</a> Envelopes in Gatewaying</h4></span> + + Similarly, when forwarding a message from another environment into + the Internet, the gateway SHOULD set the envelope return path in + accordance with an error message return address, if supplied by the + foreign environment. If the foreign environment has no equivalent + concept, the gateway must select and use a best approximation, with + the message originator's address as the default of last resort. + +<span class="h3"><h3><a class="selflink" name="section-3.9" href="#section-3.9">3.9</a> Terminating Sessions and Connections</h3></span> + + An SMTP connection is terminated when the client sends a QUIT + command. The server responds with a positive reply code, after which + it closes the connection. + + An SMTP server MUST NOT intentionally close the connection except: + + - After receiving a QUIT command and responding with a 221 reply. + + - After detecting the need to shut down the SMTP service and + returning a 421 response code. This response code can be issued + after the server receives any command or, if necessary, + asynchronously from command receipt (on the assumption that the + client will receive it after the next command is issued). + + In particular, a server that closes connections in response to + commands that are not understood is in violation of this + specification. Servers are expected to be tolerant of unknown + commands, issuing a 500 reply and awaiting further instructions from + the client. + + + + + + + +<span class="grey">Klensin Standards Track [Page 27]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-28" id="page-28" href="#page-28" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + An SMTP server which is forcibly shut down via external means SHOULD + attempt to send a line containing a 421 response code to the SMTP + client before exiting. The SMTP client will normally read the 421 + response code after sending its next command. + + SMTP clients that experience a connection close, reset, or other + communications failure due to circumstances not under their control + (in violation of the intent of this specification but sometimes + unavoidable) SHOULD, to maintain the robustness of the mail system, + treat the mail transaction as if a 451 response had been received and + act accordingly. + +<span class="h3"><h3><a class="selflink" name="section-3.10" href="#section-3.10">3.10</a> Mailing Lists and Aliases</h3></span> + + An SMTP-capable host SHOULD support both the alias and the list + models of address expansion for multiple delivery. When a message is + delivered or forwarded to each address of an expanded list form, the + return address in the envelope ("MAIL FROM:") MUST be changed to be + the address of a person or other entity who administers the list. + However, in this case, the message header [<a href="#ref-32" title='"Internet Message Format"'>32</a>] MUST be left + unchanged; in particular, the "From" field of the message header is + unaffected. + + An important mail facility is a mechanism for multi-destination + delivery of a single message, by transforming (or "expanding" or + "exploding") a pseudo-mailbox address into a list of destination + mailbox addresses. When a message is sent to such a pseudo-mailbox + (sometimes called an "exploder"), copies are forwarded or + redistributed to each mailbox in the expanded list. Servers SHOULD + simply utilize the addresses on the list; application of heuristics + or other matching rules to eliminate some addresses, such as that of + the originator, is strongly discouraged. We classify such a pseudo- + mailbox as an "alias" or a "list", depending upon the expansion + rules. + +<span class="h4"><h4><a class="selflink" name="section-3.10.1" href="#section-3.10.1">3.10.1</a> Alias</h4></span> + + To expand an alias, the recipient mailer simply replaces the pseudo- + mailbox address in the envelope with each of the expanded addresses + in turn; the rest of the envelope and the message body are left + unchanged. The message is then delivered or forwarded to each + expanded address. + +<span class="h4"><h4><a class="selflink" name="section-3.10.2" href="#section-3.10.2">3.10.2</a> List</h4></span> + + A mailing list may be said to operate by "redistribution" rather than + by "forwarding". To expand a list, the recipient mailer replaces the + pseudo-mailbox address in the envelope with all of the expanded + + + +<span class="grey">Klensin Standards Track [Page 28]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-29" id="page-29" href="#page-29" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + addresses. The return address in the envelope is changed so that all + error messages generated by the final deliveries will be returned to + a list administrator, not to the message originator, who generally + has no control over the contents of the list and will typically find + error messages annoying. + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. The SMTP Specifications</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a> SMTP Commands</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-4.1.1" href="#section-4.1.1">4.1.1</a> Command Semantics and Syntax</h4></span> + + The SMTP commands define the mail transfer or the mail system + function requested by the user. SMTP commands are character strings + terminated by <CRLF>. The commands themselves are alphabetic + characters terminated by <SP> if parameters follow and <CRLF> + otherwise. (In the interest of improved interoperability, SMTP + receivers are encouraged to tolerate trailing white space before the + terminating <CRLF>.) The syntax of the local part of a mailbox must + conform to receiver site conventions and the syntax specified in + <a href="#section-4.1.2">section 4.1.2</a>. The SMTP commands are discussed below. The SMTP + replies are discussed in <a href="#section-4.2">section 4.2</a>. + + A mail transaction involves several data objects which are + communicated as arguments to different commands. The reverse-path is + the argument of the MAIL command, the forward-path is the argument of + the RCPT command, and the mail data is the argument of the DATA + command. These arguments or data objects must be transmitted and + held pending the confirmation communicated by the end of mail data + indication which finalizes the transaction. The model for this is + that distinct buffers are provided to hold the types of data objects, + that is, there is a reverse-path buffer, a forward-path buffer, and a + mail data buffer. Specific commands cause information to be appended + to a specific buffer, or cause one or more buffers to be cleared. + + Several commands (RSET, DATA, QUIT) are specified as not permitting + parameters. In the absence of specific extensions offered by the + server and accepted by the client, clients MUST NOT send such + parameters and servers SHOULD reject commands containing them as + having invalid syntax. + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.1" href="#section-4.1.1.1">4.1.1.1</a> Extended HELLO (EHLO) or HELLO (HELO)</h5></span> + + These commands are used to identify the SMTP client to the SMTP + server. The argument field contains the fully-qualified domain name + of the SMTP client if one is available. In situations in which the + SMTP client system does not have a meaningful domain name (e.g., when + its address is dynamically allocated and no reverse mapping record is + + + +<span class="grey">Klensin Standards Track [Page 29]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-30" id="page-30" href="#page-30" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + available), the client SHOULD send an address literal (see <a href="#section-4.1.3">section</a> + <a href="#section-4.1.3">4.1.3</a>), optionally followed by information that will help to identify + the client system. y The SMTP server identifies itself to the SMTP + client in the connection greeting reply and in the response to this + command. + + A client SMTP SHOULD start an SMTP session by issuing the EHLO + command. If the SMTP server supports the SMTP service extensions it + will give a successful response, a failure response, or an error + response. If the SMTP server, in violation of this specification, + does not support any SMTP service extensions it will generate an + error response. Older client SMTP systems MAY, as discussed above, + use HELO (as specified in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>) instead of EHLO, and servers MUST + support the HELO command and reply properly to it. In any event, a + client MUST issue HELO or EHLO before starting a mail transaction. + + These commands, and a "250 OK" reply to one of them, confirm that + both the SMTP client and the SMTP server are in the initial state, + that is, there is no transaction in progress and all state tables and + buffers are cleared. + + Syntax: + + ehlo = "EHLO" SP Domain CRLF + helo = "HELO" SP Domain CRLF + + Normally, the response to EHLO will be a multiline reply. Each line + of the response contains a keyword and, optionally, one or more + parameters. Following the normal syntax for multiline replies, these + keyworks follow the code (250) and a hyphen for all but the last + line, and the code and a space for the last line. The syntax for a + positive response, using the ABNF notation and terminal symbols of + [<a href="#ref-8" title='"Augmented BNF for Syntax Specifications: ABNF"'>8</a>], is: + + ehlo-ok-rsp = ( "250" domain [ SP ehlo-greet ] CRLF ) + / ( "250-" domain [ SP ehlo-greet ] CRLF + *( "250-" ehlo-line CRLF ) + "250" SP ehlo-line CRLF ) + + ehlo-greet = 1*(%d0-9 / %d11-12 / %d14-127) + ; string of any characters other than CR or LF + + ehlo-line = ehlo-keyword *( SP ehlo-param ) + + ehlo-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-") + ; additional syntax of ehlo-params depends on + ; ehlo-keyword + + + + +<span class="grey">Klensin Standards Track [Page 30]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-31" id="page-31" href="#page-31" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + ehlo-param = 1*(%d33-127) + ; any CHAR excluding <SP> and all + ; control characters (US-ASCII 0-31 inclusive) + + Although EHLO keywords may be specified in upper, lower, or mixed + case, they MUST always be recognized and processed in a case- + insensitive manner. This is simply an extension of practices + specified in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> and <a href="#section-2.4.1">section 2.4.1</a>. + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.2" href="#section-4.1.1.2">4.1.1.2</a> MAIL (MAIL)</h5></span> + + This command is used to initiate a mail transaction in which the mail + data is delivered to an SMTP server which may, in turn, deliver it to + one or more mailboxes or pass it on to another system (possibly using + SMTP). The argument field contains a reverse-path and may contain + optional parameters. In general, the MAIL command may be sent only + when no mail transaction is in progress, see <a href="#section-4.1.4">section 4.1.4</a>. + + The reverse-path consists of the sender mailbox. Historically, that + mailbox might optionally have been preceded by a list of hosts, but + that behavior is now deprecated (see <a href="#appendix-C">appendix C</a>). In some types of + reporting messages for which a reply is likely to cause a mail loop + (for example, mail delivery and nondelivery notifications), the + reverse-path may be null (see <a href="#section-3.7">section 3.7</a>). + + This command clears the reverse-path buffer, the forward-path buffer, + and the mail data buffer; and inserts the reverse-path information + from this command into the reverse-path buffer. + + If service extensions were negotiated, the MAIL command may also + carry parameters associated with a particular service extension. + + Syntax: + + "MAIL FROM:" ("<>" / Reverse-Path) + [SP Mail-parameters] CRLF + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.3" href="#section-4.1.1.3">4.1.1.3</a> RECIPIENT (RCPT)</h5></span> + + This command is used to identify an individual recipient of the mail + data; multiple recipients are specified by multiple use of this + command. The argument field contains a forward-path and may contain + optional parameters. + + The forward-path normally consists of the required destination + mailbox. Sending systems SHOULD not generate the optional list of + hosts known as a source route. Receiving systems MUST recognize + + + + +<span class="grey">Klensin Standards Track [Page 31]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-32" id="page-32" href="#page-32" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + source route syntax but SHOULD strip off the source route + specification and utilize the domain name associated with the mailbox + as if the source route had not been provided. + + Similarly, relay hosts SHOULD strip or ignore source routes, and + names MUST NOT be copied into the reverse-path. When mail reaches + its ultimate destination (the forward-path contains only a + destination mailbox), the SMTP server inserts it into the destination + mailbox in accordance with its host mail conventions. + + For example, mail received at relay host xyz.com with envelope + commands + + MAIL FROM:<userx@y.foo.org> + RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org> + + will normally be sent directly on to host d.bar.org with envelope + commands + + MAIL FROM:<userx@y.foo.org> + RCPT TO:<userc@d.bar.org> + + As provided in <a href="#appendix-C">appendix C</a>, xyz.com MAY also choose to relay the + message to hosta.int, using the envelope commands + + MAIL FROM:<userx@y.foo.org> + RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org> + + or to jkl.org, using the envelope commands + + MAIL FROM:<userx@y.foo.org> + RCPT TO:<@jkl.org:userc@d.bar.org> + + Of course, since hosts are not required to relay mail at all, xyz.com + may also reject the message entirely when the RCPT command is + received, using a 550 code (since this is a "policy reason"). + + If service extensions were negotiated, the RCPT command may also + carry parameters associated with a particular service extension + offered by the server. The client MUST NOT transmit parameters other + than those associated with a service extension offered by the server + in its EHLO response. + +Syntax: + "RCPT TO:" ("<Postmaster@" domain ">" / "<Postmaster>" / Forward-Path) + [SP Rcpt-parameters] CRLF + + + + + +<span class="grey">Klensin Standards Track [Page 32]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-33" id="page-33" href="#page-33" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.4" href="#section-4.1.1.4">4.1.1.4</a> DATA (DATA)</h5></span> + + The receiver normally sends a 354 response to DATA, and then treats + the lines (strings ending in <CRLF> sequences, as described in + <a href="#section-2.3.7">section 2.3.7</a>) following the command as mail data from the sender. + This command causes the mail data to be appended to the mail data + buffer. The mail data may contain any of the 128 ASCII character + codes, although experience has indicated that use of control + characters other than SP, HT, CR, and LF may cause problems and + SHOULD be avoided when possible. + + The mail data is terminated by a line containing only a period, that + is, the character sequence "<CRLF>.<CRLF>" (see <a href="#section-4.5.2">section 4.5.2</a>). This + is the end of mail data indication. Note that the first <CRLF> of + this terminating sequence is also the <CRLF> that ends the final line + of the data (message text) or, if there was no data, ends the DATA + command itself. An extra <CRLF> MUST NOT be added, as that would + cause an empty line to be added to the message. The only exception + to this rule would arise if the message body were passed to the + originating SMTP-sender with a final "line" that did not end in + <CRLF>; in that case, the originating SMTP system MUST either reject + the message as invalid or add <CRLF> in order to have the receiving + SMTP server recognize the "end of data" condition. + + The custom of accepting lines ending only in <LF>, as a concession to + non-conforming behavior on the part of some UNIX systems, has proven + to cause more interoperability problems than it solves, and SMTP + server systems MUST NOT do this, even in the name of improved + robustness. In particular, the sequence "<LF>.<LF>" (bare line + feeds, without carriage returns) MUST NOT be treated as equivalent to + <CRLF>.<CRLF> as the end of mail data indication. + + Receipt of the end of mail data indication requires the server to + process the stored mail transaction information. This processing + consumes the information in the reverse-path buffer, the forward-path + buffer, and the mail data buffer, and on the completion of this + command these buffers are cleared. If the processing is successful, + the receiver MUST send an OK reply. If the processing fails the + receiver MUST send a failure reply. The SMTP model does not allow + for partial failures at this point: either the message is accepted by + the server for delivery and a positive response is returned or it is + not accepted and a failure reply is returned. In sending a positive + completion reply to the end of data indication, the receiver takes + full responsibility for the message (see <a href="#section-6.1">section 6.1</a>). Errors that + are diagnosed subsequently MUST be reported in a mail message, as + discussed in <a href="#section-4.4">section 4.4</a>. + + + + + +<span class="grey">Klensin Standards Track [Page 33]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-34" id="page-34" href="#page-34" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + When the SMTP server accepts a message either for relaying or for + final delivery, it inserts a trace record (also referred to + interchangeably as a "time stamp line" or "Received" line) at the top + of the mail data. This trace record indicates the identity of the + host that sent the message, the identity of the host that received + the message (and is inserting this time stamp), and the date and time + the message was received. Relayed messages will have multiple time + stamp lines. Details for formation of these lines, including their + syntax, is specified in <a href="#section-4.4">section 4.4</a>. + + Additional discussion about the operation of the DATA command appears + in <a href="#section-3.3">section 3.3</a>. + + Syntax: + "DATA" CRLF + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.5" href="#section-4.1.1.5">4.1.1.5</a> RESET (RSET)</h5></span> + + This command specifies that the current mail transaction will be + aborted. Any stored sender, recipients, and mail data MUST be + discarded, and all buffers and state tables cleared. The receiver + MUST send a "250 OK" reply to a RSET command with no arguments. A + reset command may be issued by the client at any time. It is + effectively equivalent to a NOOP (i.e., if has no effect) if issued + immediately after EHLO, before EHLO is issued in the session, after + an end-of-data indicator has been sent and acknowledged, or + immediately before a QUIT. An SMTP server MUST NOT close the + connection as the result of receiving a RSET; that action is reserved + for QUIT (see <a href="#section-4.1.1.10">section 4.1.1.10</a>). + + Since EHLO implies some additional processing and response by the + server, RSET will normally be more efficient than reissuing that + command, even though the formal semantics are the same. + + There are circumstances, contrary to the intent of this + specification, in which an SMTP server may receive an indication that + the underlying TCP connection has been closed or reset. To preserve + the robustness of the mail system, SMTP servers SHOULD be prepared + for this condition and SHOULD treat it as if a QUIT had been received + before the connection disappeared. + + Syntax: + "RSET" CRLF + + + + + + + + +<span class="grey">Klensin Standards Track [Page 34]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-35" id="page-35" href="#page-35" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.6" href="#section-4.1.1.6">4.1.1.6</a> VERIFY (VRFY)</h5></span> + + This command asks the receiver to confirm that the argument + identifies a user or mailbox. If it is a user name, information is + returned as specified in <a href="#section-3.5">section 3.5</a>. + + This command has no effect on the reverse-path buffer, the forward- + path buffer, or the mail data buffer. + + Syntax: + "VRFY" SP String CRLF + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.7" href="#section-4.1.1.7">4.1.1.7</a> EXPAND (EXPN)</h5></span> + + This command asks the receiver to confirm that the argument + identifies a mailing list, and if so, to return the membership of + that list. If the command is successful, a reply is returned + containing information as described in <a href="#section-3.5">section 3.5</a>. This reply will + have multiple lines except in the trivial case of a one-member list. + + This command has no effect on the reverse-path buffer, the forward- + path buffer, or the mail data buffer and may be issued at any time. + + Syntax: + "EXPN" SP String CRLF + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.8" href="#section-4.1.1.8">4.1.1.8</a> HELP (HELP)</h5></span> + + This command causes the server to send helpful information to the + client. The command MAY take an argument (e.g., any command name) + and return more specific information as a response. + + This command has no effect on the reverse-path buffer, the forward- + path buffer, or the mail data buffer and may be issued at any time. + + SMTP servers SHOULD support HELP without arguments and MAY support it + with arguments. + + Syntax: + "HELP" [ SP String ] CRLF + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.9" href="#section-4.1.1.9">4.1.1.9</a> NOOP (NOOP)</h5></span> + + This command does not affect any parameters or previously entered + commands. It specifies no action other than that the receiver send + an OK reply. + + + + + +<span class="grey">Klensin Standards Track [Page 35]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-36" id="page-36" href="#page-36" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + This command has no effect on the reverse-path buffer, the forward- + path buffer, or the mail data buffer and may be issued at any time. + If a parameter string is specified, servers SHOULD ignore it. + + Syntax: + "NOOP" [ SP String ] CRLF + +<span class="h5"><h5><a class="selflink" name="section-4.1.1.10" href="#section-4.1.1.10">4.1.1.10</a> QUIT (QUIT)</h5></span> + + This command specifies that the receiver MUST send an OK reply, and + then close the transmission channel. + + The receiver MUST NOT intentionally close the transmission channel + until it receives and replies to a QUIT command (even if there was an + error). The sender MUST NOT intentionally close the transmission + channel until it sends a QUIT command and SHOULD wait until it + receives the reply (even if there was an error response to a previous + command). If the connection is closed prematurely due to violations + of the above or system or network failure, the server MUST cancel any + pending transaction, but not undo any previously completed + transaction, and generally MUST act as if the command or transaction + in progress had received a temporary error (i.e., a 4yz response). + + The QUIT command may be issued at any time. + + Syntax: + "QUIT" CRLF + +<span class="h4"><h4><a class="selflink" name="section-4.1.2" href="#section-4.1.2">4.1.2</a> Command Argument Syntax</h4></span> + + The syntax of the argument fields of the above commands (using the + syntax specified in [<a href="#ref-8" title='"Augmented BNF for Syntax Specifications: ABNF"'>8</a>] where applicable) is given below. Some of + the productions given below are used only in conjunction with source + routes as described in <a href="#appendix-C">appendix C</a>. Terminals not defined in this + document, such as ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in + the "core" syntax [8 (<a href="#section-6">section 6</a>)] or in the message format syntax + [<a href="#ref-32" title='"Internet Message Format"'>32</a>]. + + Reverse-path = Path + Forward-path = Path + Path = "<" [ A-d-l ":" ] Mailbox ">" + A-d-l = At-domain *( "," A-d-l ) + ; Note that this form, the so-called "source route", + ; MUST BE accepted, SHOULD NOT be generated, and SHOULD be + ; ignored. + At-domain = "@" domain + Mail-parameters = esmtp-param *(SP esmtp-param) + Rcpt-parameters = esmtp-param *(SP esmtp-param) + + + +<span class="grey">Klensin Standards Track [Page 36]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-37" id="page-37" href="#page-37" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + esmtp-param = esmtp-keyword ["=" esmtp-value] + esmtp-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-") + esmtp-value = 1*(%d33-60 / %d62-127) + ; any CHAR excluding "=", SP, and control characters + Keyword = Ldh-str + Argument = Atom + Domain = (sub-domain 1*("." sub-domain)) / address-literal + sub-domain = Let-dig [Ldh-str] + + address-literal = "[" IPv4-address-literal / + IPv6-address-literal / + General-address-literal "]" + ; See <a href="#section-4.1.3">section 4.1.3</a> + + Mailbox = Local-part "@" Domain + + Local-part = Dot-string / Quoted-string + ; MAY be case-sensitive + + Dot-string = Atom *("." Atom) + + Atom = 1*atext + + Quoted-string = DQUOTE *qcontent DQUOTE + + String = Atom / Quoted-string + + While the above definition for Local-part is relatively permissive, + for maximum interoperability, a host that expects to receive mail + SHOULD avoid defining mailboxes where the Local-part requires (or + uses) the Quoted-string form or where the Local-part is case- + sensitive. For any purposes that require generating or comparing + Local-parts (e.g., to specific mailbox names), all quoted forms MUST + be treated as equivalent and the sending system SHOULD transmit the + form that uses the minimum quoting possible. + + Systems MUST NOT define mailboxes in such a way as to require the use + in SMTP of non-ASCII characters (octets with the high order bit set + to one) or ASCII "control characters" (decimal value 0-31 and 127). + These characters MUST NOT be used in MAIL or RCPT commands or other + commands that require mailbox names. + + Note that the backslash, "\", is a quote character, which is used to + indicate that the next character is to be used literally (instead of + its normal interpretation). For example, "Joe\,Smith" indicates a + single nine character user field with the comma being the fourth + character of the field. + + + + +<span class="grey">Klensin Standards Track [Page 37]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-38" id="page-38" href="#page-38" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + To promote interoperability and consistent with long-standing + guidance about conservative use of the DNS in naming and applications + (e.g., see <a href="#section-2.3.1">section 2.3.1</a> of the base DNS document, <a href="http://tools.ietf.org/html/rfc1035">RFC1035</a> [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>]), + characters outside the set of alphas, digits, and hyphen MUST NOT + appear in domain name labels for SMTP clients or servers. In + particular, the underscore character is not permitted. SMTP servers + that receive a command in which invalid character codes have been + employed, and for which there are no other reasons for rejection, + MUST reject that command with a 501 response. + +<span class="h4"><h4><a class="selflink" name="section-4.1.3" href="#section-4.1.3">4.1.3</a> Address Literals</h4></span> + + Sometimes a host is not known to the domain name system and + communication (and, in particular, communication to report and repair + the error) is blocked. To bypass this barrier a special literal form + of the address is allowed as an alternative to a domain name. For + IPv4 addresses, this form uses four small decimal integers separated + by dots and enclosed by brackets such as [123.255.37.2], which + indicates an (IPv4) Internet Address in sequence-of-octets form. For + IPv6 and other forms of addressing that might eventually be + standardized, the form consists of a standardized "tag" that + identifies the address syntax, a colon, and the address itself, in a + format specified as part of the IPv6 standards [<a href="#ref-17" title='"IP Version 6 Addressing Architecture"'>17</a>]. + + Specifically: + + IPv4-address-literal = Snum 3("." Snum) + IPv6-address-literal = "IPv6:" IPv6-addr + General-address-literal = Standardized-tag ":" 1*dcontent + Standardized-tag = Ldh-str + ; MUST be specified in a standards-track RFC + ; and registered with IANA + + Snum = 1*3DIGIT ; representing a decimal integer + ; value in the range 0 through 255 + Let-dig = ALPHA / DIGIT + Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig + + IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp + IPv6-hex = 1*4HEXDIG + IPv6-full = IPv6-hex 7(":" IPv6-hex) + IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" + IPv6-hex)] + ; The "::" represents at least 2 16-bit groups of zeros + ; No more than 6 groups in addition to the "::" may be + ; present + IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal + IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" + + + +<span class="grey">Klensin Standards Track [Page 38]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-39" id="page-39" href="#page-39" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal + ; The "::" represents at least 2 16-bit groups of zeros + ; No more than 4 groups in addition to the "::" and + ; IPv4-address-literal may be present + +<span class="h4"><h4><a class="selflink" name="section-4.1.4" href="#section-4.1.4">4.1.4</a> Order of Commands</h4></span> + + There are restrictions on the order in which these commands may be + used. + + A session that will contain mail transactions MUST first be + initialized by the use of the EHLO command. An SMTP server SHOULD + accept commands for non-mail transactions (e.g., VRFY or EXPN) + without this initialization. + + An EHLO command MAY be issued by a client later in the session. If + it is issued after the session begins, the SMTP server MUST clear all + buffers and reset the state exactly as if a RSET command had been + issued. In other words, the sequence of RSET followed immediately by + EHLO is redundant, but not harmful other than in the performance cost + of executing unnecessary commands. + + If the EHLO command is not acceptable to the SMTP server, 501, 500, + or 502 failure replies MUST be returned as appropriate. The SMTP + server MUST stay in the same state after transmitting these replies + that it was in before the EHLO was received. + + The SMTP client MUST, if possible, ensure that the domain parameter + to the EHLO command is a valid principal host name (not a CNAME or MX + name) for its host. If this is not possible (e.g., when the client's + address is dynamically assigned and the client does not have an + obvious name), an address literal SHOULD be substituted for the + domain name and supplemental information provided that will assist in + identifying the client. + + An SMTP server MAY verify that the domain name parameter in the EHLO + command actually corresponds to the IP address of the client. + However, the server MUST NOT refuse to accept a message for this + reason if the verification fails: the information about verification + failure is for logging and tracing only. + + The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time + during a session, or without previously initializing a session. SMTP + servers SHOULD process these normally (that is, not return a 503 + code) even if no EHLO command has yet been received; clients SHOULD + open a session with EHLO before sending these commands. + + + + + +<span class="grey">Klensin Standards Track [Page 39]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-40" id="page-40" href="#page-40" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + If these rules are followed, the example in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> that shows "550 + access denied to you" in response to an EXPN command is incorrect + unless an EHLO command precedes the EXPN or the denial of access is + based on the client's IP address or other authentication or + authorization-determining mechanisms. + + The MAIL command (or the obsolete SEND, SOML, or SAML commands) + begins a mail transaction. Once started, a mail transaction consists + of a transaction beginning command, one or more RCPT commands, and a + DATA command, in that order. A mail transaction may be aborted by + the RSET (or a new EHLO) command. There may be zero or more + transactions in a session. MAIL (or SEND, SOML, or SAML) MUST NOT be + sent if a mail transaction is already open, i.e., it should be sent + only if no mail transaction had been started in the session, or it + the previous one successfully concluded with a successful DATA + command, or if the previous one was aborted with a RSET. + + If the transaction beginning command argument is not acceptable, a + 501 failure reply MUST be returned and the SMTP server MUST stay in + the same state. If the commands in a transaction are out of order to + the degree that they cannot be processed by the server, a 503 failure + reply MUST be returned and the SMTP server MUST stay in the same + state. + + The last command in a session MUST be the QUIT command. The QUIT + command cannot be used at any other time in a session, but SHOULD be + used by the client SMTP to request connection closure, even when no + session opening command was sent and accepted. + +<span class="h4"><h4><a class="selflink" name="section-4.1.5" href="#section-4.1.5">4.1.5</a> Private-use Commands</h4></span> + + As specified in <a href="#section-2.2.2">section 2.2.2</a>, commands starting in "X" may be used + by bilateral agreement between the client (sending) and server + (receiving) SMTP agents. An SMTP server that does not recognize such + a command is expected to reply with "500 Command not recognized". An + extended SMTP server MAY list the feature names associated with these + private commands in the response to the EHLO command. + + Commands sent or accepted by SMTP systems that do not start with "X" + MUST conform to the requirements of <a href="#section-2.2.2">section 2.2.2</a>. + +<span class="h3"><h3><a class="selflink" name="section-4.2" href="#section-4.2">4.2</a> SMTP Replies</h3></span> + + Replies to SMTP commands serve to ensure the synchronization of + requests and actions in the process of mail transfer and to guarantee + that the SMTP client always knows the state of the SMTP server. + Every command MUST generate exactly one reply. + + + + +<span class="grey">Klensin Standards Track [Page 40]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-41" id="page-41" href="#page-41" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + The details of the command-reply sequence are described in <a href="#section-4.3">section</a> + <a href="#section-4.3">4.3</a>. + + An SMTP reply consists of a three digit number (transmitted as three + numeric characters) followed by some text unless specified otherwise + in this document. The number is for use by automata to determine + what state to enter next; the text is for the human user. The three + digits contain enough encoded information that the SMTP client need + not examine the text and may either discard it or pass it on to the + user, as appropriate. Exceptions are as noted elsewhere in this + document. In particular, the 220, 221, 251, 421, and 551 reply codes + are associated with message text that must be parsed and interpreted + by machines. In the general case, the text may be receiver dependent + and context dependent, so there are likely to be varying texts for + each reply code. A discussion of the theory of reply codes is given + in <a href="#section-4.2.1">section 4.2.1</a>. Formally, a reply is defined to be the sequence: a + three-digit code, <SP>, one line of text, and <CRLF>, or a multiline + reply (as defined in <a href="#section-4.2.1">section 4.2.1</a>). Since, in violation of this + specification, the text is sometimes not sent, clients which do not + receive it SHOULD be prepared to process the code alone (with or + without a trailing space character). Only the EHLO, EXPN, and HELP + commands are expected to result in multiline replies in normal + circumstances, however, multiline replies are allowed for any + command. + + In ABNF, server responses are: + + Greeting = "220 " Domain [ SP text ] CRLF + Reply-line = Reply-code [ SP text ] CRLF + + where "Greeting" appears only in the 220 response that announces that + the server is opening its part of the connection. + + An SMTP server SHOULD send only the reply codes listed in this + document. An SMTP server SHOULD use the text shown in the examples + whenever appropriate. + + An SMTP client MUST determine its actions only by the reply code, not + by the text (except for the "change of address" 251 and 551 and, if + necessary, 220, 221, and 421 replies); in the general case, any text, + including no text at all (although senders SHOULD NOT send bare + codes), MUST be acceptable. The space (blank) following the reply + code is considered part of the text. Whenever possible, a receiver- + SMTP SHOULD test the first digit (severity indication) of the reply + code. + + + + + + +<span class="grey">Klensin Standards Track [Page 41]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-42" id="page-42" href="#page-42" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + The list of codes that appears below MUST NOT be construed as + permanent. While the addition of new codes should be a rare and + significant activity, with supplemental information in the textual + part of the response being preferred, new codes may be added as the + result of new Standards or Standards-track specifications. + Consequently, a sender-SMTP MUST be prepared to handle codes not + specified in this document and MUST do so by interpreting the first + digit only. + +<span class="h4"><h4><a class="selflink" name="section-4.2.1" href="#section-4.2.1">4.2.1</a> Reply Code Severities and Theory</h4></span> + + The three digits of the reply each have a special significance. The + first digit denotes whether the response is good, bad or incomplete. + An unsophisticated SMTP client, or one that receives an unexpected + code, will be able to determine its next action (proceed as planned, + redo, retrench, etc.) by examining this first digit. An SMTP client + that wants to know approximately what kind of error occurred (e.g., + mail system error, command syntax error) may examine the second + digit. The third digit and any supplemental information that may be + present is reserved for the finest gradation of information. + + There are five values for the first digit of the reply code: + + 1yz Positive Preliminary reply + The command has been accepted, but the requested action is being + held in abeyance, pending confirmation of the information in this + reply. The SMTP client should send another command specifying + whether to continue or abort the action. Note: unextended SMTP + does not have any commands that allow this type of reply, and so + does not have continue or abort commands. + + 2yz Positive Completion reply + The requested action has been successfully completed. A new + request may be initiated. + + 3yz Positive Intermediate reply + The command has been accepted, but the requested action is being + held in abeyance, pending receipt of further information. The + SMTP client should send another command specifying this + information. This reply is used in command sequence groups (i.e., + in DATA). + + 4yz Transient Negative Completion reply + The command was not accepted, and the requested action did not + occur. However, the error condition is temporary and the action + may be requested again. The sender should return to the beginning + of the command sequence (if any). It is difficult to assign a + meaning to "transient" when two different sites (receiver- and + + + +<span class="grey">Klensin Standards Track [Page 42]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-43" id="page-43" href="#page-43" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + sender-SMTP agents) must agree on the interpretation. Each reply + in this category might have a different time value, but the SMTP + client is encouraged to try again. A rule of thumb to determine + whether a reply fits into the 4yz or the 5yz category (see below) + is that replies are 4yz if they can be successful if repeated + without any change in command form or in properties of the sender + or receiver (that is, the command is repeated identically and the + receiver does not put up a new implementation.) + + 5yz Permanent Negative Completion reply + The command was not accepted and the requested action did not + occur. The SMTP client is discouraged from repeating the exact + request (in the same sequence). Even some "permanent" error + conditions can be corrected, so the human user may want to direct + the SMTP client to reinitiate the command sequence by direct + action at some point in the future (e.g., after the spelling has + been changed, or the user has altered the account status). + + The second digit encodes responses in specific categories: + + x0z Syntax: These replies refer to syntax errors, syntactically + correct commands that do not fit any functional category, and + unimplemented or superfluous commands. + + x1z Information: These are replies to requests for information, + such as status or help. + + x2z Connections: These are replies referring to the transmission + channel. + + x3z Unspecified. + + x4z Unspecified. + + x5z Mail system: These replies indicate the status of the receiver + mail system vis-a-vis the requested transfer or other mail system + action. + + The third digit gives a finer gradation of meaning in each category + specified by the second digit. The list of replies illustrates this. + Each reply text is recommended rather than mandatory, and may even + change according to the command with which it is associated. On the + other hand, the reply codes must strictly follow the specifications + in this section. Receiver implementations should not invent new + codes for slightly different situations from the ones described here, + but rather adapt codes already defined. + + + + + +<span class="grey">Klensin Standards Track [Page 43]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-44" id="page-44" href="#page-44" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + For example, a command such as NOOP, whose successful execution does + not offer the SMTP client any new information, will return a 250 + reply. The reply is 502 when the command requests an unimplemented + non-site-specific action. A refinement of that is the 504 reply for + a command that is implemented, but that requests an unimplemented + parameter. + + The reply text may be longer than a single line; in these cases the + complete text must be marked so the SMTP client knows when it can + stop reading the reply. This requires a special format to indicate a + multiple line reply. + + The format for multiline replies requires that every line, except the + last, begin with the reply code, followed immediately by a hyphen, + "-" (also known as minus), followed by text. The last line will + begin with the reply code, followed immediately by <SP>, optionally + some text, and <CRLF>. As noted above, servers SHOULD send the <SP> + if subsequent text is not sent, but clients MUST be prepared for it + to be omitted. + + For example: + + 123-First line + 123-Second line + 123-234 text beginning with numbers + 123 The last line + + In many cases the SMTP client then simply needs to search for a line + beginning with the reply code followed by <SP> or <CRLF> and ignore + all preceding lines. In a few cases, there is important data for the + client in the reply "text". The client will be able to identify + these cases from the current context. + +<span class="h4"><h4><a class="selflink" name="section-4.2.2" href="#section-4.2.2">4.2.2</a> Reply Codes by Function Groups</h4></span> + + 500 Syntax error, command unrecognized + (This may include errors such as command line too long) + 501 Syntax error in parameters or arguments + 502 Command not implemented (see <a href="#section-4.2.4">section 4.2.4</a>) + 503 Bad sequence of commands + 504 Command parameter not implemented + + 211 System status, or system help reply + 214 Help message + (Information on how to use the receiver or the meaning of a + particular non-standard command; this reply is useful only + to the human user) + + + + +<span class="grey">Klensin Standards Track [Page 44]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-45" id="page-45" href="#page-45" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + 220 <domain> Service ready + 221 <domain> Service closing transmission channel + 421 <domain> Service not available, closing transmission channel + (This may be a reply to any command if the service knows it + must shut down) + + 250 Requested mail action okay, completed + 251 User not local; will forward to <forward-path> + (See <a href="#section-3.4">section 3.4</a>) + 252 Cannot VRFY user, but will accept message and attempt + delivery + (See <a href="#section-3.5.3">section 3.5.3</a>) + 450 Requested mail action not taken: mailbox unavailable + (e.g., mailbox busy) + 550 Requested action not taken: mailbox unavailable + (e.g., mailbox not found, no access, or command rejected + for policy reasons) + 451 Requested action aborted: error in processing + 551 User not local; please try <forward-path> + (See <a href="#section-3.4">section 3.4</a>) + 452 Requested action not taken: insufficient system storage + 552 Requested mail action aborted: exceeded storage allocation + 553 Requested action not taken: mailbox name not allowed + (e.g., mailbox syntax incorrect) + 354 Start mail input; end with <CRLF>.<CRLF> + 554 Transaction failed (Or, in the case of a connection-opening + response, "No SMTP service here") + +<span class="h4"><h4><a class="selflink" name="section-4.2.3" href="#section-4.2.3">4.2.3</a> Reply Codes in Numeric Order</h4></span> + + 211 System status, or system help reply + 214 Help message + (Information on how to use the receiver or the meaning of a + particular non-standard command; this reply is useful only + to the human user) + 220 <domain> Service ready + 221 <domain> Service closing transmission channel + 250 Requested mail action okay, completed + 251 User not local; will forward to <forward-path> + (See <a href="#section-3.4">section 3.4</a>) + 252 Cannot VRFY user, but will accept message and attempt + delivery + (See <a href="#section-3.5.3">section 3.5.3</a>) + + 354 Start mail input; end with <CRLF>.<CRLF> + + + + + + +<span class="grey">Klensin Standards Track [Page 45]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-46" id="page-46" href="#page-46" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + 421 <domain> Service not available, closing transmission channel + (This may be a reply to any command if the service knows it + must shut down) + 450 Requested mail action not taken: mailbox unavailable + (e.g., mailbox busy) + 451 Requested action aborted: local error in processing + 452 Requested action not taken: insufficient system storage + 500 Syntax error, command unrecognized + (This may include errors such as command line too long) + 501 Syntax error in parameters or arguments + 502 Command not implemented (see <a href="#section-4.2.4">section 4.2.4</a>) + 503 Bad sequence of commands + 504 Command parameter not implemented + 550 Requested action not taken: mailbox unavailable + (e.g., mailbox not found, no access, or command rejected + for policy reasons) + 551 User not local; please try <forward-path> + (See <a href="#section-3.4">section 3.4</a>) + 552 Requested mail action aborted: exceeded storage allocation + 553 Requested action not taken: mailbox name not allowed + (e.g., mailbox syntax incorrect) + 554 Transaction failed (Or, in the case of a connection-opening + response, "No SMTP service here") + +<span class="h4"><h4><a class="selflink" name="section-4.2.4" href="#section-4.2.4">4.2.4</a> Reply Code 502</h4></span> + + Questions have been raised as to when reply code 502 (Command not + implemented) SHOULD be returned in preference to other codes. 502 + SHOULD be used when the command is actually recognized by the SMTP + server, but not implemented. If the command is not recognized, code + 500 SHOULD be returned. Extended SMTP systems MUST NOT list + capabilities in response to EHLO for which they will return 502 (or + 500) replies. + +<span class="h4"><h4><a class="selflink" name="section-4.2.5" href="#section-4.2.5">4.2.5</a> Reply Codes After DATA and the Subsequent <CRLF>.<CRLF></h4></span> + + When an SMTP server returns a positive completion status (2yz code) + after the DATA command is completed with <CRLF>.<CRLF>, it accepts + responsibility for: + + - delivering the message (if the recipient mailbox exists), or + + - if attempts to deliver the message fail due to transient + conditions, retrying delivery some reasonable number of times at + intervals as specified in <a href="#section-4.5.4">section 4.5.4</a>. + + + + + + +<span class="grey">Klensin Standards Track [Page 46]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-47" id="page-47" href="#page-47" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + - if attempts to deliver the message fail due to permanent + conditions, or if repeated attempts to deliver the message fail + due to transient conditions, returning appropriate notification to + the sender of the original message (using the address in the SMTP + MAIL command). + + When an SMTP server returns a permanent error status (5yz) code after + the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make + any subsequent attempt to deliver that message. The SMTP client + retains responsibility for delivery of that message and may either + return it to the user or requeue it for a subsequent attempt (see + <a href="#section-4.5.4.1">section 4.5.4.1</a>). + + The user who originated the message SHOULD be able to interpret the + return of a transient failure status (by mail message or otherwise) + as a non-delivery indication, just as a permanent failure would be + interpreted. I.e., if the client SMTP successfully handles these + conditions, the user will not receive such a reply. + + When an SMTP server returns a permanent error status (5yz) code after + the DATA command is completely with <CRLF>.<CRLF>, it MUST NOT make + any subsequent attempt to deliver the message. As with temporary + error status codes, the SMTP client retains responsibility for the + message, but SHOULD not again attempt delivery to the same server + without user review and intervention of the message. + +<span class="h3"><h3><a class="selflink" name="section-4.3" href="#section-4.3">4.3</a> Sequencing of Commands and Replies</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-4.3.1" href="#section-4.3.1">4.3.1</a> Sequencing Overview</h4></span> + + The communication between the sender and receiver is an alternating + dialogue, controlled by the sender. As such, the sender issues a + command and the receiver responds with a reply. Unless other + arrangements are negotiated through service extensions, the sender + MUST wait for this response before sending further commands. + + One important reply is the connection greeting. Normally, a receiver + will send a 220 "Service ready" reply when the connection is + completed. The sender SHOULD wait for this greeting message before + sending any commands. + + Note: all the greeting-type replies have the official name (the + fully-qualified primary domain name) of the server host as the first + word following the reply code. Sometimes the host will have no + meaningful name. See 4.1.3 for a discussion of alternatives in these + situations. + + + + + +<span class="grey">Klensin Standards Track [Page 47]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-48" id="page-48" href="#page-48" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + For example, + + 220 ISIF.USC.EDU Service ready + or + 220 mail.foo.com SuperSMTP v 6.1.2 Service ready + or + 220 [10.0.0.1] Clueless host service ready + + The table below lists alternative success and failure replies for + each command. These SHOULD be strictly adhered to: a receiver may + substitute text in the replies, but the meaning and action implied by + the code numbers and by the specific command reply sequence cannot be + altered. + +<span class="h4"><h4><a class="selflink" name="section-4.3.2" href="#section-4.3.2">4.3.2</a> Command-Reply Sequences</h4></span> + + Each command is listed with its usual possible replies. The prefixes + used before the possible replies are "I" for intermediate, "S" for + success, and "E" for error. Since some servers may generate other + replies under special circumstances, and to allow for future + extension, SMTP clients SHOULD, when possible, interpret only the + first digit of the reply and MUST be prepared to deal with + unrecognized reply codes by interpreting the first digit only. + Unless extended using the mechanisms described in <a href="#section-2.2">section 2.2</a>, SMTP + servers MUST NOT transmit reply codes to an SMTP client that are + other than three digits or that do not start in a digit between 2 and + 5 inclusive. + + These sequencing rules and, in principle, the codes themselves, can + be extended or modified by SMTP extensions offered by the server and + accepted (requested) by the client. + + In addition to the codes listed below, any SMTP command can return + any of the following codes if the corresponding unusual circumstances + are encountered: + + 500 For the "command line too long" case or if the command name was + not recognized. Note that producing a "command not recognized" + error in response to the required subset of these commands is a + violation of this specification. + + 501 Syntax error in command or arguments. In order to provide for + future extensions, commands that are specified in this document as + not accepting arguments (DATA, RSET, QUIT) SHOULD return a 501 + message if arguments are supplied in the absence of EHLO- + advertised extensions. + + 421 Service shutting down and closing transmission channel + + + +<span class="grey">Klensin Standards Track [Page 48]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-49" id="page-49" href="#page-49" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + Specific sequences are: + + CONNECTION ESTABLISHMENT + S: 220 + E: 554 + EHLO or HELO + S: 250 + E: 504, 550 + MAIL + S: 250 + E: 552, 451, 452, 550, 553, 503 + RCPT + S: 250, 251 (but see <a href="#section-3.4">section 3.4</a> for discussion of 251 and 551) + E: 550, 551, 552, 553, 450, 451, 452, 503, 550 + DATA + I: 354 -> data -> S: 250 + E: 552, 554, 451, 452 + E: 451, 554, 503 + RSET + S: 250 + VRFY + S: 250, 251, 252 + E: 550, 551, 553, 502, 504 + EXPN + S: 250, 252 + E: 550, 500, 502, 504 + HELP + S: 211, 214 + E: 502, 504 + NOOP + S: 250 + QUIT + S: 221 + +<span class="h3"><h3><a class="selflink" name="section-4.4" href="#section-4.4">4.4</a> Trace Information</h3></span> + + When an SMTP server receives a message for delivery or further + processing, it MUST insert trace ("time stamp" or "Received") + information at the beginning of the message content, as discussed in + <a href="#section-4.1.1.4">section 4.1.1.4</a>. + + This line MUST be structured as follows: + + - The FROM field, which MUST be supplied in an SMTP environment, + SHOULD contain both (1) the name of the source host as presented + in the EHLO command and (2) an address literal containing the IP + address of the source, determined from the TCP connection. + + + + +<span class="grey">Klensin Standards Track [Page 49]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-50" id="page-50" href="#page-50" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + - The ID field MAY contain an "@" as suggested in <a href="http://tools.ietf.org/html/rfc822">RFC 822</a>, but this + is not required. + + - The FOR field MAY contain a list of <path> entries when multiple + RCPT commands have been given. This may raise some security + issues and is usually not desirable; see <a href="#section-7.2">section 7.2</a>. + + An Internet mail program MUST NOT change a Received: line that was + previously added to the message header. SMTP servers MUST prepend + Received lines to messages; they MUST NOT change the order of + existing lines or insert Received lines in any other location. + + As the Internet grows, comparability of Received fields is important + for detecting problems, especially slow relays. SMTP servers that + create Received fields SHOULD use explicit offsets in the dates + (e.g., -0800), rather than time zone names of any type. Local time + (with an offset) is preferred to UT when feasible. This formulation + allows slightly more information about local circumstances to be + specified. If UT is needed, the receiver need merely do some simple + arithmetic to convert the values. Use of UT loses information about + the time zone-location of the server. If it is desired to supply a + time zone name, it SHOULD be included in a comment. + + When the delivery SMTP server makes the "final delivery" of a + message, it inserts a return-path line at the beginning of the mail + data. This use of return-path is required; mail systems MUST support + it. The return-path line preserves the information in the <reverse- + path> from the MAIL command. Here, final delivery means the message + has left the SMTP environment. Normally, this would mean it had been + delivered to the destination user or an associated mail drop, but in + some cases it may be further processed and transmitted by another + mail system. + + It is possible for the mailbox in the return path to be different + from the actual sender's mailbox, for example, if error responses are + to be delivered to a special error handling mailbox rather than to + the message sender. When mailing lists are involved, this + arrangement is common and useful as a means of directing errors to + the list maintainer rather than the message originator. + + The text above implies that the final mail data will begin with a + return path line, followed by one or more time stamp lines. These + lines will be followed by the mail data headers and body [<a href="#ref-32" title='"Internet Message Format"'>32</a>]. + + It is sometimes difficult for an SMTP server to determine whether or + not it is making final delivery since forwarding or other operations + may occur after the message is accepted for delivery. Consequently, + + + + +<span class="grey">Klensin Standards Track [Page 50]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-51" id="page-51" href="#page-51" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + any further (forwarding, gateway, or relay) systems MAY remove the + return path and rebuild the MAIL command as needed to ensure that + exactly one such line appears in a delivered message. + + A message-originating SMTP system SHOULD NOT send a message that + already contains a Return-path header. SMTP servers performing a + relay function MUST NOT inspect the message data, and especially not + to the extent needed to determine if Return-path headers are present. + SMTP servers making final delivery MAY remove Return-path headers + before adding their own. + + The primary purpose of the Return-path is to designate the address to + which messages indicating non-delivery or other mail system failures + are to be sent. For this to be unambiguous, exactly one return path + SHOULD be present when the message is delivered. Systems using <a href="http://tools.ietf.org/html/rfc822">RFC</a> + <a href="http://tools.ietf.org/html/rfc822">822</a> syntax with non-SMTP transports SHOULD designate an unambiguous + address, associated with the transport envelope, to which error + reports (e.g., non-delivery messages) should be sent. + + Historical note: Text in <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> that appears to contradict the use + of the Return-path header (or the envelope reverse path address from + the MAIL command) as the destination for error messages is not + applicable on the Internet. The reverse path address (as copied into + the Return-path) MUST be used as the target of any mail containing + delivery error messages. + + In particular: + + - a gateway from SMTP->elsewhere SHOULD insert a return-path header, + unless it is known that the "elsewhere" transport also uses + Internet domain addresses and maintains the envelope sender + address separately. + + - a gateway from elsewhere->SMTP SHOULD delete any return-path + header present in the message, and either copy that information to + the SMTP envelope or combine it with information present in the + envelope of the other transport system to construct the reverse + path argument to the MAIL command in the SMTP envelope. + + The server must give special treatment to cases in which the + processing following the end of mail data indication is only + partially successful. This could happen if, after accepting several + recipients and the mail data, the SMTP server finds that the mail + data could be successfully delivered to some, but not all, of the + recipients. In such cases, the response to the DATA command MUST be + an OK reply. However, the SMTP server MUST compose and send an + "undeliverable mail" notification message to the originator of the + message. + + + +<span class="grey">Klensin Standards Track [Page 51]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-52" id="page-52" href="#page-52" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + A single notification listing all of the failed recipients or + separate notification messages MUST be sent for each failed + recipient. For economy of processing by the sender, the former is + preferred when possible. All undeliverable mail notification + messages are sent using the MAIL command (even if they result from + processing the obsolete SEND, SOML, or SAML commands) and use a null + return path as discussed in <a href="#section-3.7">section 3.7</a>. + + The time stamp line and the return path line are formally defined as + follows: + +Return-path-line = "Return-Path:" FWS Reverse-path <CRLF> + +Time-stamp-line = "Received:" FWS Stamp <CRLF> + +Stamp = From-domain By-domain Opt-info ";" FWS date-time + + ; where "date-time" is as defined in [<a href="#ref-32" title='"Internet Message Format"'>32</a>] + ; but the "obs-" forms, especially two-digit + ; years, are prohibited in SMTP and MUST NOT be used. + +From-domain = "FROM" FWS Extended-Domain CFWS + +By-domain = "BY" FWS Extended-Domain CFWS + +Extended-Domain = Domain / + ( Domain FWS "(" TCP-info ")" ) / + ( Address-literal FWS "(" TCP-info ")" ) + +TCP-info = Address-literal / ( Domain FWS Address-literal ) + ; Information derived by server from TCP connection + ; not client EHLO. + +Opt-info = [Via] [With] [ID] [For] + +Via = "VIA" FWS Link CFWS + +With = "WITH" FWS Protocol CFWS + +ID = "ID" FWS String / msg-id CFWS + +For = "FOR" FWS 1*( Path / Mailbox ) CFWS + +Link = "TCP" / Addtl-Link +Addtl-Link = Atom + ; Additional standard names for links are registered with the + ; Internet Assigned Numbers Authority (IANA). "Via" is + ; primarily of value with non-Internet transports. SMTP + + + +<span class="grey">Klensin Standards Track [Page 52]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-53" id="page-53" href="#page-53" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + ; servers SHOULD NOT use unregistered names. +Protocol = "ESMTP" / "SMTP" / Attdl-Protocol +Attdl-Protocol = Atom + ; Additional standard names for protocols are registered with the + ; Internet Assigned Numbers Authority (IANA). SMTP servers + ; SHOULD NOT use unregistered names. + +<span class="h3"><h3><a class="selflink" name="section-4.5" href="#section-4.5">4.5</a> Additional Implementation Issues</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-4.5.1" href="#section-4.5.1">4.5.1</a> Minimum Implementation</h4></span> + + In order to make SMTP workable, the following minimum implementation + is required for all receivers. The following commands MUST be + supported to conform to this specification: + + EHLO + HELO + MAIL + RCPT + DATA + RSET + NOOP + QUIT + VRFY + + Any system that includes an SMTP server supporting mail relaying or + delivery MUST support the reserved mailbox "postmaster" as a case- + insensitive local name. This postmaster address is not strictly + necessary if the server always returns 554 on connection opening (as + described in <a href="#section-3.1">section 3.1</a>). The requirement to accept mail for + postmaster implies that RCPT commands which specify a mailbox for + postmaster at any of the domains for which the SMTP server provides + mail service, as well as the special case of "RCPT TO:<Postmaster>" + (with no domain specification), MUST be supported. + + SMTP systems are expected to make every reasonable effort to accept + mail directed to Postmaster from any other system on the Internet. + In extreme cases --such as to contain a denial of service attack or + other breach of security-- an SMTP server may block mail directed to + Postmaster. However, such arrangements SHOULD be narrowly tailored + so as to avoid blocking messages which are not part of such attacks. + +<span class="h4"><h4><a class="selflink" name="section-4.5.2" href="#section-4.5.2">4.5.2</a> Transparency</h4></span> + + Without some provision for data transparency, the character sequence + "<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user. + In general, users are not aware of such "forbidden" sequences. To + + + + +<span class="grey">Klensin Standards Track [Page 53]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-54" id="page-54" href="#page-54" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + allow all user composed text to be transmitted transparently, the + following procedures are used: + + - Before sending a line of mail text, the SMTP client checks the + first character of the line. If it is a period, one additional + period is inserted at the beginning of the line. + + - When a line of mail text is received by the SMTP server, it checks + the line. If the line is composed of a single period, it is + treated as the end of mail indicator. If the first character is a + period and there are other characters on the line, the first + character is deleted. + + The mail data may contain any of the 128 ASCII characters. All + characters are to be delivered to the recipient's mailbox, including + spaces, vertical and horizontal tabs, and other control characters. + If the transmission channel provides an 8-bit byte (octet) data + stream, the 7-bit ASCII codes are transmitted right justified in the + octets, with the high order bits cleared to zero. See 3.7 for + special treatment of these conditions in SMTP systems serving a relay + function. + + In some systems it may be necessary to transform the data as it is + received and stored. This may be necessary for hosts that use a + different character set than ASCII as their local character set, that + store data in records rather than strings, or which use special + character sequences as delimiters inside mailboxes. If such + transformations are necessary, they MUST be reversible, especially if + they are applied to mail being relayed. + +<span class="h4"><h4><a class="selflink" name="section-4.5.3" href="#section-4.5.3">4.5.3</a> Sizes and Timeouts</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-4.5.3.1" href="#section-4.5.3.1">4.5.3.1</a> Size limits and minimums</h5></span> + + There are several objects that have required minimum/maximum sizes. + Every implementation MUST be able to receive objects of at least + these sizes. Objects larger than these sizes SHOULD be avoided when + possible. However, some Internet mail constructs such as encoded + X.400 addresses [<a href="#ref-16" title='"Mapping between X.400 and RFC822/MIME"'>16</a>] will often require larger objects: clients MAY + attempt to transmit these, but MUST be prepared for a server to + reject them if they cannot be handled by it. To the maximum extent + possible, implementation techniques which impose no limits on the + length of these objects should be used. + + local-part + The maximum total length of a user name or other local-part is 64 + characters. + + + + +<span class="grey">Klensin Standards Track [Page 54]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-55" id="page-55" href="#page-55" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + domain + The maximum total length of a domain name or number is 255 + characters. + + path + The maximum total length of a reverse-path or forward-path is 256 + characters (including the punctuation and element separators). + + command line + The maximum total length of a command line including the command + word and the <CRLF> is 512 characters. SMTP extensions may be + used to increase this limit. + + reply line + The maximum total length of a reply line including the reply code + and the <CRLF> is 512 characters. More information may be + conveyed through multiple-line replies. + + text line + The maximum total length of a text line including the <CRLF> is + 1000 characters (not counting the leading dot duplicated for + transparency). This number may be increased by the use of SMTP + Service Extensions. + + message content + The maximum total length of a message content (including any + message headers as well as the message body) MUST BE at least 64K + octets. Since the introduction of Internet standards for + multimedia mail [<a href="#ref-12" title='"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"'>12</a>], message lengths on the Internet have grown + dramatically, and message size restrictions should be avoided if + at all possible. SMTP server systems that must impose + restrictions SHOULD implement the "SIZE" service extension [<a href="#ref-18" title='"SMTP Service Extension for Message Size Declaration"'>18</a>], + and SMTP client systems that will send large messages SHOULD + utilize it when possible. + + recipients buffer + The minimum total number of recipients that must be buffered is + 100 recipients. Rejection of messages (for excessive recipients) + with fewer than 100 RCPT commands is a violation of this + specification. The general principle that relaying SMTP servers + MUST NOT, and delivery SMTP servers SHOULD NOT, perform validation + tests on message headers suggests that rejecting a message based + on the total number of recipients shown in header fields is to be + discouraged. A server which imposes a limit on the number of + recipients MUST behave in an orderly fashion, such as to reject + additional addresses over its limit rather than silently + discarding addresses previously accepted. A client that needs to + + + + +<span class="grey">Klensin Standards Track [Page 55]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-56" id="page-56" href="#page-56" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + deliver a message containing over 100 RCPT commands SHOULD be + prepared to transmit in 100-recipient "chunks" if the server + declines to accept more than 100 recipients in a single message. + + Errors due to exceeding these limits may be reported by using the + reply codes. Some examples of reply codes are: + + 500 Line too long. + or + 501 Path too long + or + 452 Too many recipients (see below) + or + 552 Too much mail data. + + <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> [<a href="#ref-30" title='"Simple Mail Transfer Protocol"'>30</a>] incorrectly listed the error where an SMTP server + exhausts its implementation limit on the number of RCPT commands + ("too many recipients") as having reply code 552. The correct reply + code for this condition is 452. Clients SHOULD treat a 552 code in + this case as a temporary, rather than permanent, failure so the logic + below works. + + When a conforming SMTP server encounters this condition, it has at + least 100 successful RCPT commands in its recipients buffer. If the + server is able to accept the message, then at least these 100 + addresses will be removed from the SMTP client's queue. When the + client attempts retransmission of those addresses which received 452 + responses, at least 100 of these will be able to fit in the SMTP + server's recipients buffer. Each retransmission attempt which is + able to deliver anything will be able to dispose of at least 100 of + these recipients. + + If an SMTP server has an implementation limit on the number of RCPT + commands and this limit is exhausted, it MUST use a response code of + 452 (but the client SHOULD also be prepared for a 552, as noted + above). If the server has a configured site-policy limitation on the + number of RCPT commands, it MAY instead use a 5XX response code. + This would be most appropriate if the policy limitation was intended + to apply if the total recipient count for a particular message body + were enforced even if that message body was sent in multiple mail + transactions. + +<span class="h5"><h5><a class="selflink" name="section-4.5.3.2" href="#section-4.5.3.2">4.5.3.2</a> Timeouts</h5></span> + + An SMTP client MUST provide a timeout mechanism. It MUST use per- + command timeouts rather than somehow trying to time the entire mail + transaction. Timeouts SHOULD be easily reconfigurable, preferably + without recompiling the SMTP code. To implement this, a timer is set + + + +<span class="grey">Klensin Standards Track [Page 56]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-57" id="page-57" href="#page-57" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + for each SMTP command and for each buffer of the data transfer. The + latter means that the overall timeout is inherently proportional to + the size of the message. + + Based on extensive experience with busy mail-relay hosts, the minimum + per-command timeout values SHOULD be as follows: + + Initial 220 Message: 5 minutes + An SMTP client process needs to distinguish between a failed TCP + connection and a delay in receiving the initial 220 greeting + message. Many SMTP servers accept a TCP connection but delay + delivery of the 220 message until their system load permits more + mail to be processed. + + MAIL Command: 5 minutes + + RCPT Command: 5 minutes + A longer timeout is required if processing of mailing lists and + aliases is not deferred until after the message was accepted. + + DATA Initiation: 2 minutes + This is while awaiting the "354 Start Input" reply to a DATA + command. + + Data Block: 3 minutes + This is while awaiting the completion of each TCP SEND call + transmitting a chunk of data. + + DATA Termination: 10 minutes. + This is while awaiting the "250 OK" reply. When the receiver gets + the final period terminating the message data, it typically + performs processing to deliver the message to a user mailbox. A + spurious timeout at this point would be very wasteful and would + typically result in delivery of multiple copies of the message, + since it has been successfully sent and the server has accepted + responsibility for delivery. See <a href="#section-6.1">section 6.1</a> for additional + discussion. + + An SMTP server SHOULD have a timeout of at least 5 minutes while it + is awaiting the next command from the sender. + +<span class="h4"><h4><a class="selflink" name="section-4.5.4" href="#section-4.5.4">4.5.4</a> Retry Strategies</h4></span> + + The common structure of a host SMTP implementation includes user + mailboxes, one or more areas for queuing messages in transit, and one + or more daemon processes for sending and receiving mail. The exact + structure will vary depending on the needs of the users on the host + + + + +<span class="grey">Klensin Standards Track [Page 57]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-58" id="page-58" href="#page-58" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + and the number and size of mailing lists supported by the host. We + describe several optimizations that have proved helpful, particularly + for mailers supporting high traffic levels. + + Any queuing strategy MUST include timeouts on all activities on a + per-command basis. A queuing strategy MUST NOT send error messages + in response to error messages under any circumstances. + +<span class="h5"><h5><a class="selflink" name="section-4.5.4.1" href="#section-4.5.4.1">4.5.4.1</a> Sending Strategy</h5></span> + + The general model for an SMTP client is one or more processes that + periodically attempt to transmit outgoing mail. In a typical system, + the program that composes a message has some method for requesting + immediate attention for a new piece of outgoing mail, while mail that + cannot be transmitted immediately MUST be queued and periodically + retried by the sender. A mail queue entry will include not only the + message itself but also the envelope information. + + The sender MUST delay retrying a particular destination after one + attempt has failed. In general, the retry interval SHOULD be at + least 30 minutes; however, more sophisticated and variable strategies + will be beneficial when the SMTP client can determine the reason for + non-delivery. + + Retries continue until the message is transmitted or the sender gives + up; the give-up time generally needs to be at least 4-5 days. The + parameters to the retry algorithm MUST be configurable. + + A client SHOULD keep a list of hosts it cannot reach and + corresponding connection timeouts, rather than just retrying queued + mail items. + + Experience suggests that failures are typically transient (the target + system or its connection has crashed), favoring a policy of two + connection attempts in the first hour the message is in the queue, + and then backing off to one every two or three hours. + + The SMTP client can shorten the queuing delay in cooperation with the + SMTP server. For example, if mail is received from a particular + address, it is likely that mail queued for that host can now be sent. + Application of this principle may, in many cases, eliminate the + requirement for an explicit "send queues now" function such as ETRN + [<a href="#ref-9" title='"SMTP Service Extension for Remote Message Queue Starting"'>9</a>]. + + The strategy may be further modified as a result of multiple + addresses per host (see below) to optimize delivery time vs. resource + usage. + + + + +<span class="grey">Klensin Standards Track [Page 58]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-59" id="page-59" href="#page-59" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + An SMTP client may have a large queue of messages for each + unavailable destination host. If all of these messages were retried + in every retry cycle, there would be excessive Internet overhead and + the sending system would be blocked for a long period. Note that an + SMTP client can generally determine that a delivery attempt has + failed only after a timeout of several minutes and even a one-minute + timeout per connection will result in a very large delay if retries + are repeated for dozens, or even hundreds, of queued messages to the + same host. + + At the same time, SMTP clients SHOULD use great care in caching + negative responses from servers. In an extreme case, if EHLO is + issued multiple times during the same SMTP connection, different + answers may be returned by the server. More significantly, 5yz + responses to the MAIL command MUST NOT be cached. + + When a mail message is to be delivered to multiple recipients, and + the SMTP server to which a copy of the message is to be sent is the + same for multiple recipients, then only one copy of the message + SHOULD be transmitted. That is, the SMTP client SHOULD use the + command sequence: MAIL, RCPT, RCPT,... RCPT, DATA instead of the + sequence: MAIL, RCPT, DATA, ..., MAIL, RCPT, DATA. However, if there + are very many addresses, a limit on the number of RCPT commands per + MAIL command MAY be imposed. Implementation of this efficiency + feature is strongly encouraged. + + Similarly, to achieve timely delivery, the SMTP client MAY support + multiple concurrent outgoing mail transactions. However, some limit + may be appropriate to protect the host from devoting all its + resources to mail. + +<span class="h5"><h5><a class="selflink" name="section-4.5.4.2" href="#section-4.5.4.2">4.5.4.2</a> Receiving Strategy</h5></span> + + The SMTP server SHOULD attempt to keep a pending listen on the SMTP + port at all times. This requires the support of multiple incoming + TCP connections for SMTP. Some limit MAY be imposed but servers that + cannot handle more than one SMTP transaction at a time are not in + conformance with the intent of this specification. + + As discussed above, when the SMTP server receives mail from a + particular host address, it could activate its own SMTP queuing + mechanisms to retry any mail pending for that host address. + +<span class="h4"><h4><a class="selflink" name="section-4.5.5" href="#section-4.5.5">4.5.5</a> Messages with a null reverse-path</h4></span> + + There are several types of notification messages which are required + by existing and proposed standards to be sent with a null reverse + path, namely non-delivery notifications as discussed in <a href="#section-3.7">section 3.7</a>, + + + +<span class="grey">Klensin Standards Track [Page 59]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-60" id="page-60" href="#page-60" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + other kinds of Delivery Status Notifications (DSNs) [<a href="#ref-24" title='"SMTP Service Extension for Delivery Status Notifications"'>24</a>], and also + Message Disposition Notifications (MDNs) [<a href="#ref-10" title='"An Extensible Message Format for Message Disposition Notifications"'>10</a>]. All of these kinds of + messages are notifications about a previous message, and they are + sent to the reverse-path of the previous mail message. (If the + delivery of such a notification message fails, that usually indicates + a problem with the mail system of the host to which the notification + message is addressed. For this reason, at some hosts the MTA is set + up to forward such failed notification messages to someone who is + able to fix problems with the mail system, e.g., via the postmaster + alias.) + + All other types of messages (i.e., any message which is not required + by a standards-track RFC to have a null reverse-path) SHOULD be sent + with with a valid, non-null reverse-path. + + Implementors of automated email processors should be careful to make + sure that the various kinds of messages with null reverse-path are + handled correctly, in particular such systems SHOULD NOT reply to + messages with null reverse-path. + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. Address Resolution and Mail Handling</h2></span> + + Once an SMTP client lexically identifies a domain to which mail will + be delivered for processing (as described in sections <a href="#section-3.6">3.6</a> and <a href="#section-3.7">3.7</a>), a + DNS lookup MUST be performed to resolve the domain name [<a href="#ref-22" title='"Domain names - implementation and specification"'>22</a>]. The + names are expected to be fully-qualified domain names (FQDNs): + mechanisms for inferring FQDNs from partial names or local aliases + are outside of this specification and, due to a history of problems, + are generally discouraged. The lookup first attempts to locate an MX + record associated with the name. If a CNAME record is found instead, + the resulting name is processed as if it were the initial name. If + no MX records are found, but an A RR is found, the A RR is treated as + if it was associated with an implicit MX RR, with a preference of 0, + pointing to that host. If one or more MX RRs are found for a given + name, SMTP systems MUST NOT utilize any A RRs associated with that + name unless they are located using the MX RRs; the "implicit MX" rule + above applies only if there are no MX records present. If MX records + are present, but none of them are usable, this situation MUST be + reported as an error. + + When the lookup succeeds, the mapping can result in a list of + alternative delivery addresses rather than a single address, because + of multiple MX records, multihoming, or both. To provide reliable + mail transmission, the SMTP client MUST be able to try (and retry) + each of the relevant addresses in this list in order, until a + delivery attempt succeeds. However, there MAY also be a configurable + limit on the number of alternate addresses that can be tried. In any + case, the SMTP client SHOULD try at least two addresses. + + + +<span class="grey">Klensin Standards Track [Page 60]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-61" id="page-61" href="#page-61" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + Two types of information is used to rank the host addresses: multiple + MX records, and multihomed hosts. + + Multiple MX records contain a preference indication that MUST be used + in sorting (see below). Lower numbers are more preferred than higher + ones. If there are multiple destinations with the same preference + and there is no clear reason to favor one (e.g., by recognition of an + easily-reached address), then the sender-SMTP MUST randomize them to + spread the load across multiple mail exchangers for a specific + organization. + + The destination host (perhaps taken from the preferred MX record) may + be multihomed, in which case the domain name resolver will return a + list of alternative IP addresses. It is the responsibility of the + domain name resolver interface to have ordered this list by + decreasing preference if necessary, and SMTP MUST try them in the + order presented. + + Although the capability to try multiple alternative addresses is + required, specific installations may want to limit or disable the use + of alternative addresses. The question of whether a sender should + attempt retries using the different addresses of a multihomed host + has been controversial. The main argument for using the multiple + addresses is that it maximizes the probability of timely delivery, + and indeed sometimes the probability of any delivery; the counter- + argument is that it may result in unnecessary resource use. Note + that resource use is also strongly determined by the sending strategy + discussed in <a href="#section-4.5.4.1">section 4.5.4.1</a>. + + If an SMTP server receives a message with a destination for which it + is a designated Mail eXchanger, it MAY relay the message (potentially + after having rewritten the MAIL FROM and/or RCPT TO addresses), make + final delivery of the message, or hand it off using some mechanism + outside the SMTP-provided transport environment. Of course, neither + of the latter require that the list of MX records be examined + further. + + If it determines that it should relay the message without rewriting + the address, it MUST sort the MX records to determine candidates for + delivery. The records are first ordered by preference, with the + lowest-numbered records being most preferred. The relay host MUST + then inspect the list for any of the names or addresses by which it + might be known in mail transactions. If a matching record is found, + all records at that preference level and higher-numbered ones MUST be + discarded from consideration. If there are no records left at that + point, it is an error condition, and the message MUST be returned as + undeliverable. If records do remain, they SHOULD be tried, best + preference first, as described above. + + + +<span class="grey">Klensin Standards Track [Page 61]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-62" id="page-62" href="#page-62" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h2"><h2><a class="selflink" name="section-6" href="#section-6">6</a>. Problem Detection and Handling</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-6.1" href="#section-6.1">6.1</a> Reliable Delivery and Replies by Email</h3></span> + + When the receiver-SMTP accepts a piece of mail (by sending a "250 OK" + message in response to DATA), it is accepting responsibility for + delivering or relaying the message. It must take this responsibility + seriously. It MUST NOT lose the message for frivolous reasons, such + as because the host later crashes or because of a predictable + resource shortage. + + If there is a delivery failure after acceptance of a message, the + receiver-SMTP MUST formulate and mail a notification message. This + notification MUST be sent using a null ("<>") reverse path in the + envelope. The recipient of this notification MUST be the address + from the envelope return path (or the Return-Path: line). However, + if this address is null ("<>"), the receiver-SMTP MUST NOT send a + notification. Obviously, nothing in this section can or should + prohibit local decisions (i.e., as part of the same system + environment as the receiver-SMTP) to log or otherwise transmit + information about null address events locally if that is desired. If + the address is an explicit source route, it MUST be stripped down to + its final hop. + + For example, suppose that an error notification must be sent for a + message that arrived with: + + MAIL FROM:<@a,@b:user@d> + + The notification message MUST be sent using: + + RCPT TO:<user@d> + + Some delivery failures after the message is accepted by SMTP will be + unavoidable. For example, it may be impossible for the receiving + SMTP server to validate all the delivery addresses in RCPT command(s) + due to a "soft" domain system error, because the target is a mailing + list (see earlier discussion of RCPT), or because the server is + acting as a relay and has no immediate access to the delivering + system. + + To avoid receiving duplicate messages as the result of timeouts, a + receiver-SMTP MUST seek to minimize the time required to respond to + the final <CRLF>.<CRLF> end of data indicator. See <a href="http://tools.ietf.org/html/rfc1047">RFC 1047</a> [<a href="#ref-28" title='"Duplicate messages and SMTP"'>28</a>] for + a discussion of this problem. + + + + + + +<span class="grey">Klensin Standards Track [Page 62]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-63" id="page-63" href="#page-63" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h3"><h3><a class="selflink" name="section-6.2" href="#section-6.2">6.2</a> Loop Detection</h3></span> + + Simple counting of the number of "Received:" headers in a message has + proven to be an effective, although rarely optimal, method of + detecting loops in mail systems. SMTP servers using this technique + SHOULD use a large rejection threshold, normally at least 100 + Received entries. Whatever mechanisms are used, servers MUST contain + provisions for detecting and stopping trivial loops. + +<span class="h3"><h3><a class="selflink" name="section-6.3" href="#section-6.3">6.3</a> Compensating for Irregularities</h3></span> + + Unfortunately, variations, creative interpretations, and outright + violations of Internet mail protocols do occur; some would suggest + that they occur quite frequently. The debate as to whether a well- + behaved SMTP receiver or relay should reject a malformed message, + attempt to pass it on unchanged, or attempt to repair it to increase + the odds of successful delivery (or subsequent reply) began almost + with the dawn of structured network mail and shows no signs of + abating. Advocates of rejection claim that attempted repairs are + rarely completely adequate and that rejection of bad messages is the + only way to get the offending software repaired. Advocates of + "repair" or "deliver no matter what" argue that users prefer that + mail go through it if at all possible and that there are significant + market pressures in that direction. In practice, these market + pressures may be more important to particular vendors than strict + conformance to the standards, regardless of the preference of the + actual developers. + + The problems associated with ill-formed messages were exacerbated by + the introduction of the split-UA mail reading protocols [3, 26, 5, + 21]. These protocols have encouraged the use of SMTP as a posting + protocol, and SMTP servers as relay systems for these client hosts + (which are often only intermittently connected to the Internet). + Historically, many of those client machines lacked some of the + mechanisms and information assumed by SMTP (and indeed, by the mail + format protocol [<a href="#ref-7" title='"Standard for the Format of ARPA Internet Text Messages"'>7</a>]). Some could not keep adequate track of time; + others had no concept of time zones; still others could not identify + their own names or addresses; and, of course, none could satisfy the + assumptions that underlay <a href="http://tools.ietf.org/html/rfc822">RFC 822</a>'s conception of authenticated + addresses. + + In response to these weak SMTP clients, many SMTP systems now + complete messages that are delivered to them in incomplete or + incorrect form. This strategy is generally considered appropriate + when the server can identify or authenticate the client, and there + are prior agreements between them. By contrast, there is at best + great concern about fixes applied by a relay or delivery SMTP server + that has little or no knowledge of the user or client machine. + + + +<span class="grey">Klensin Standards Track [Page 63]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-64" id="page-64" href="#page-64" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + The following changes to a message being processed MAY be applied + when necessary by an originating SMTP server, or one used as the + target of SMTP as an initial posting protocol: + + - Addition of a message-id field when none appears + + - Addition of a date, time or time zone when none appears + + - Correction of addresses to proper FQDN format + + The less information the server has about the client, the less likely + these changes are to be correct and the more caution and conservatism + should be applied when considering whether or not to perform fixes + and how. These changes MUST NOT be applied by an SMTP server that + provides an intermediate relay function. + + In all cases, properly-operating clients supplying correct + information are preferred to corrections by the SMTP server. In all + cases, documentation of actions performed by the servers (in trace + fields and/or header comments) is strongly encouraged. + +<span class="h2"><h2><a class="selflink" name="section-7" href="#section-7">7</a>. Security Considerations</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-7.1" href="#section-7.1">7.1</a> Mail Security and Spoofing</h3></span> + + SMTP mail is inherently insecure in that it is feasible for even + fairly casual users to negotiate directly with receiving and relaying + SMTP servers and create messages that will trick a naive recipient + into believing that they came from somewhere else. Constructing such + a message so that the "spoofed" behavior cannot be detected by an + expert is somewhat more difficult, but not sufficiently so as to be a + deterrent to someone who is determined and knowledgeable. + Consequently, as knowledge of Internet mail increases, so does the + knowledge that SMTP mail inherently cannot be authenticated, or + integrity checks provided, at the transport level. Real mail + security lies only in end-to-end methods involving the message + bodies, such as those which use digital signatures (see [<a href="#ref-14" title='"Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted"'>14</a>] and, + e.g., PGP [<a href="#ref-4" title='"OpenPGP Message Format"'>4</a>] or S/MIME [<a href="#ref-31" title='"S/MIME Version 3 Message Specification"'>31</a>]). + + Various protocol extensions and configuration options that provide + authentication at the transport level (e.g., from an SMTP client to + an SMTP server) improve somewhat on the traditional situation + described above. However, unless they are accompanied by careful + handoffs of responsibility in a carefully-designed trust environment, + they remain inherently weaker than end-to-end mechanisms which use + digitally signed messages rather than depending on the integrity of + the transport system. + + + + +<span class="grey">Klensin Standards Track [Page 64]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-65" id="page-65" href="#page-65" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + Efforts to make it more difficult for users to set envelope return + path and header "From" fields to point to valid addresses other than + their own are largely misguided: they frustrate legitimate + applications in which mail is sent by one user on behalf of another + or in which error (or normal) replies should be directed to a special + address. (Systems that provide convenient ways for users to alter + these fields on a per-message basis should attempt to establish a + primary and permanent mailbox address for the user so that Sender + fields within the message data can be generated sensibly.) + + This specification does not further address the authentication issues + associated with SMTP other than to advocate that useful functionality + not be disabled in the hope of providing some small margin of + protection against an ignorant user who is trying to fake mail. + +<span class="h3"><h3><a class="selflink" name="section-7.2" href="#section-7.2">7.2</a> "Blind" Copies</h3></span> + + Addresses that do not appear in the message headers may appear in the + RCPT commands to an SMTP server for a number of reasons. The two + most common involve the use of a mailing address as a "list exploder" + (a single address that resolves into multiple addresses) and the + appearance of "blind copies". Especially when more than one RCPT + command is present, and in order to avoid defeating some of the + purpose of these mechanisms, SMTP clients and servers SHOULD NOT copy + the full set of RCPT command arguments into the headers, either as + part of trace headers or as informational or private-extension + headers. Since this rule is often violated in practice, and cannot + be enforced, sending SMTP systems that are aware of "bcc" use MAY + find it helpful to send each blind copy as a separate message + transaction containing only a single RCPT command. + + There is no inherent relationship between either "reverse" (from + MAIL, SAML, etc., commands) or "forward" (RCPT) addresses in the SMTP + transaction ("envelope") and the addresses in the headers. Receiving + systems SHOULD NOT attempt to deduce such relationships and use them + to alter the headers of the message for delivery. The popular + "Apparently-to" header is a violation of this principle as well as a + common source of unintended information disclosure and SHOULD NOT be + used. + +<span class="h3"><h3><a class="selflink" name="section-7.3" href="#section-7.3">7.3</a> VRFY, EXPN, and Security</h3></span> + + As discussed in <a href="#section-3.5">section 3.5</a>, individual sites may want to disable + either or both of VRFY or EXPN for security reasons. As a corollary + to the above, implementations that permit this MUST NOT appear to + have verified addresses that are not, in fact, verified. If a site + + + + + +<span class="grey">Klensin Standards Track [Page 65]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-66" id="page-66" href="#page-66" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + disables these commands for security reasons, the SMTP server MUST + return a 252 response, rather than a code that could be confused with + successful or unsuccessful verification. + + Returning a 250 reply code with the address listed in the VRFY + command after having checked it only for syntax violates this rule. + Of course, an implementation that "supports" VRFY by always returning + 550 whether or not the address is valid is equally not in + conformance. + + Within the last few years, the contents of mailing lists have become + popular as an address information source for so-called "spammers." + The use of EXPN to "harvest" addresses has increased as list + administrators have installed protections against inappropriate uses + of the lists themselves. Implementations SHOULD still provide + support for EXPN, but sites SHOULD carefully evaluate the tradeoffs. + As authentication mechanisms are introduced into SMTP, some sites may + choose to make EXPN available only to authenticated requestors. + +<span class="h3"><h3><a class="selflink" name="section-7.4" href="#section-7.4">7.4</a> Information Disclosure in Announcements</h3></span> + + There has been an ongoing debate about the tradeoffs between the + debugging advantages of announcing server type and version (and, + sometimes, even server domain name) in the greeting response or in + response to the HELP command and the disadvantages of exposing + information that might be useful in a potential hostile attack. The + utility of the debugging information is beyond doubt. Those who + argue for making it available point out that it is far better to + actually secure an SMTP server rather than hope that trying to + conceal known vulnerabilities by hiding the server's precise identity + will provide more protection. Sites are encouraged to evaluate the + tradeoff with that issue in mind; implementations are strongly + encouraged to minimally provide for making type and version + information available in some way to other network hosts. + +<span class="h3"><h3><a class="selflink" name="section-7.5" href="#section-7.5">7.5</a> Information Disclosure in Trace Fields</h3></span> + + In some circumstances, such as when mail originates from within a LAN + whose hosts are not directly on the public Internet, trace + ("Received") fields produced in conformance with this specification + may disclose host names and similar information that would not + normally be available. This ordinarily does not pose a problem, but + sites with special concerns about name disclosure should be aware of + it. Also, the optional FOR clause should be supplied with caution or + not at all when multiple recipients are involved lest it + inadvertently disclose the identities of "blind copy" recipients to + others. + + + + +<span class="grey">Klensin Standards Track [Page 66]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-67" id="page-67" href="#page-67" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.6" href="#section-7.6">7.6</a> Information Disclosure in Message Forwarding</h3></span> + + As discussed in <a href="#section-3.4">section 3.4</a>, use of the 251 or 551 reply codes to + identify the replacement address associated with a mailbox may + inadvertently disclose sensitive information. Sites that are + concerned about those issues should ensure that they select and + configure servers appropriately. + +<span class="h3"><h3><a class="selflink" name="section-7.7" href="#section-7.7">7.7</a> Scope of Operation of SMTP Servers</h3></span> + + It is a well-established principle that an SMTP server may refuse to + accept mail for any operational or technical reason that makes sense + to the site providing the server. However, cooperation among sites + and installations makes the Internet possible. If sites take + excessive advantage of the right to reject traffic, the ubiquity of + email availability (one of the strengths of the Internet) will be + threatened; considerable care should be taken and balance maintained + if a site decides to be selective about the traffic it will accept + and process. + + In recent years, use of the relay function through arbitrary sites + has been used as part of hostile efforts to hide the actual origins + of mail. Some sites have decided to limit the use of the relay + function to known or identifiable sources, and implementations SHOULD + provide the capability to perform this type of filtering. When mail + is rejected for these or other policy reasons, a 550 code SHOULD be + used in response to EHLO, MAIL, or RCPT as appropriate. + +<span class="h2"><h2><a class="selflink" name="section-8" href="#section-8">8</a>. IANA Considerations</h2></span> + + IANA will maintain three registries in support of this specification. + The first consists of SMTP service extensions with the associated + keywords, and, as needed, parameters and verbs. As specified in + <a href="#section-2.2.2">section 2.2.2</a>, no entry may be made in this registry that starts in + an "X". Entries may be made only for service extensions (and + associated keywords, parameters, or verbs) that are defined in + standards-track or experimental RFCs specifically approved by the + IESG for this purpose. + + The second registry consists of "tags" that identify forms of domain + literals other than those for IPv4 addresses (specified in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> + and in this document) and IPv6 addresses (specified in this + document). Additional literal types require standardization before + being used; none are anticipated at this time. + + The third, established by <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> and renewed by this specification, + is a registry of link and protocol identifiers to be used with the + "via" and "with" subclauses of the time stamp ("Received: header") + + + +<span class="grey">Klensin Standards Track [Page 67]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-68" id="page-68" href="#page-68" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + described in <a href="#section-4.4">section 4.4</a>. Link and protocol identifiers in addition + to those specified in this document may be registered only by + standardization or by way of an RFC-documented, IESG-approved, + Experimental protocol extension. + +<span class="h2"><h2><a class="selflink" name="section-9" href="#section-9">9</a>. References</h2></span> + + [<a name="ref-1" id="ref-1">1</a>] American National Standards Institute (formerly United States of + America Standards Institute), X3.4, 1968, "USA Code for + Information Interchange". ANSI X3.4-1968 has been replaced by + newer versions with slight modifications, but the 1968 version + remains definitive for the Internet. + + [<a name="ref-2" id="ref-2">2</a>] Braden, R., "Requirements for Internet hosts - application and + support", STD 3, <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a>, October 1989. + + [<a name="ref-3" id="ref-3">3</a>] Butler, M., Chase, D., Goldberger, J., Postel, J. and J. + Reynolds, "Post Office Protocol - version 2", <a href="http://tools.ietf.org/html/rfc937">RFC 937</a>, February + 1985. + + [<a name="ref-4" id="ref-4">4</a>] Callas, J., Donnerhacke, L., Finney, H. and R. Thayer, "OpenPGP + Message Format", <a href="http://tools.ietf.org/html/rfc2440">RFC 2440</a>, November 1998. + + [<a name="ref-5" id="ref-5">5</a>] Crispin, M., "Interactive Mail Access Protocol - Version 2", <a href="http://tools.ietf.org/html/rfc1176">RFC</a> + <a href="http://tools.ietf.org/html/rfc1176">1176</a>, August 1990. + + [<a name="ref-6" id="ref-6">6</a>] Crispin, M., "Internet Message Access Protocol - Version 4", <a href="http://tools.ietf.org/html/rfc2060">RFC</a> + <a href="http://tools.ietf.org/html/rfc2060">2060</a>, December 1996. + + [<a name="ref-7" id="ref-7">7</a>] Crocker, D., "Standard for the Format of ARPA Internet Text + Messages", <a href="http://tools.ietf.org/html/rfc822">RFC 822</a>, August 1982. + + [<a name="ref-8" id="ref-8">8</a>] Crocker, D. and P. Overell, Eds., "Augmented BNF for Syntax + Specifications: ABNF", <a href="http://tools.ietf.org/html/rfc2234">RFC 2234</a>, November 1997. + + [<a name="ref-9" id="ref-9">9</a>] De Winter, J., "SMTP Service Extension for Remote Message Queue + Starting", <a href="http://tools.ietf.org/html/rfc1985">RFC 1985</a>, August 1996. + + [<a name="ref-10" id="ref-10">10</a>] Fajman, R., "An Extensible Message Format for Message + Disposition Notifications", <a href="http://tools.ietf.org/html/rfc2298">RFC 2298</a>, March 1998. + + [<a name="ref-11" id="ref-11">11</a>] Freed, N, "Behavior of and Requirements for Internet Firewalls", + <a href="http://tools.ietf.org/html/rfc2979">RFC 2979</a>, October 2000. + + [<a name="ref-12" id="ref-12">12</a>] Freed, N. and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message Bodies", + <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a>, December 1996. + + + + +<span class="grey">Klensin Standards Track [Page 68]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-69" id="page-69" href="#page-69" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + [<a name="ref-13" id="ref-13">13</a>] Freed, N., "SMTP Service Extension for Command Pipelining", <a href="http://tools.ietf.org/html/rfc2920">RFC</a> + <a href="http://tools.ietf.org/html/rfc2920">2920</a>, September 2000. + + [<a name="ref-14" id="ref-14">14</a>] Galvin, J., Murphy, S., Crocker, S. and N. Freed, "Security + Multiparts for MIME: Multipart/Signed and Multipart/Encrypted", + <a href="http://tools.ietf.org/html/rfc1847">RFC 1847</a>, October 1995. + + [<a name="ref-15" id="ref-15">15</a>] Gellens, R. and J. Klensin, "Message Submission", <a href="http://tools.ietf.org/html/rfc2476">RFC 2476</a>, + December 1998. + + [<a name="ref-16" id="ref-16">16</a>] Kille, S., "Mapping between X.400 and <a href="http://tools.ietf.org/html/rfc822">RFC822</a>/MIME", <a href="http://tools.ietf.org/html/rfc2156">RFC 2156</a>, + January 1998. + + [<a name="ref-17" id="ref-17">17</a>] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing + Architecture", <a href="http://tools.ietf.org/html/rfc2373">RFC 2373</a>, July 1998. + + [<a name="ref-18" id="ref-18">18</a>] Klensin, J., Freed, N. and K. Moore, "SMTP Service Extension for + Message Size Declaration", STD 10, <a href="http://tools.ietf.org/html/rfc1870">RFC 1870</a>, November 1995. + + [<a name="ref-19" id="ref-19">19</a>] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker, + "SMTP Service Extensions", STD 10, <a href="http://tools.ietf.org/html/rfc1869">RFC 1869</a>, November 1995. + + [<a name="ref-20" id="ref-20">20</a>] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker, + "SMTP Service Extension for 8bit-MIMEtransport", <a href="http://tools.ietf.org/html/rfc1652">RFC 1652</a>, July + 1994. + + [<a name="ref-21" id="ref-21">21</a>] Lambert, M., "PCMAIL: A distributed mail system for personal + computers", <a href="http://tools.ietf.org/html/rfc1056">RFC 1056</a>, July 1988. + + [<a name="ref-22" id="ref-22">22</a>] Mockapetris, P., "Domain names - implementation and + specification", STD 13, <a href="http://tools.ietf.org/html/rfc1035">RFC 1035</a>, November 1987. + + Mockapetris, P., "Domain names - concepts and facilities", STD + 13, <a href="http://tools.ietf.org/html/rfc1034">RFC 1034</a>, November 1987. + + [<a name="ref-23" id="ref-23">23</a>] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part + Three: Message Header Extensions for Non-ASCII Text", <a href="http://tools.ietf.org/html/rfc2047">RFC 2047</a>, + December 1996. + + [<a name="ref-24" id="ref-24">24</a>] Moore, K., "SMTP Service Extension for Delivery Status + Notifications", <a href="http://tools.ietf.org/html/rfc1891">RFC 1891</a>, January 1996. + + [<a name="ref-25" id="ref-25">25</a>] Moore, K., and G. Vaudreuil, "An Extensible Message Format for + Delivery Status Notifications", <a href="http://tools.ietf.org/html/rfc1894">RFC 1894</a>, January 1996. + + [<a name="ref-26" id="ref-26">26</a>] Myers, J. and M. Rose, "Post Office Protocol - Version 3", STD + 53, <a href="http://tools.ietf.org/html/rfc1939">RFC 1939</a>, May 1996. + + + + +<span class="grey">Klensin Standards Track [Page 69]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-70" id="page-70" href="#page-70" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + [<a name="ref-27" id="ref-27">27</a>] Partridge, C., "Mail routing and the domain system", <a href="http://tools.ietf.org/html/rfc974">RFC 974</a>, + January 1986. + + [<a name="ref-28" id="ref-28">28</a>] Partridge, C., "Duplicate messages and SMTP", <a href="http://tools.ietf.org/html/rfc1047">RFC 1047</a>, February + 1988. + + [<a name="ref-29" id="ref-29">29</a>] Postel, J., ed., "Transmission Control Protocol - DARPA Internet + Program Protocol Specification", STD 7, <a href="http://tools.ietf.org/html/rfc793">RFC 793</a>, September 1981. + + [<a name="ref-30" id="ref-30">30</a>] Postel, J., "Simple Mail Transfer Protocol", <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>, August + 1982. + + [<a name="ref-31" id="ref-31">31</a>] Ramsdell, B., Ed., "S/MIME Version 3 Message Specification", <a href="http://tools.ietf.org/html/rfc2633">RFC</a> + <a href="http://tools.ietf.org/html/rfc2633">2633</a>, June 1999. + + [<a name="ref-32" id="ref-32">32</a>] Resnick, P., Ed., "Internet Message Format", <a href="http://tools.ietf.org/html/rfc2822">RFC 2822</a>, April + 2001. + + [<a name="ref-33" id="ref-33">33</a>] Vaudreuil, G., "SMTP Service Extensions for Transmission of + Large and Binary MIME Messages", <a href="http://tools.ietf.org/html/rfc1830">RFC 1830</a>, August 1995. + + [<a name="ref-34" id="ref-34">34</a>] Vaudreuil, G., "Enhanced Mail System Status Codes", <a href="http://tools.ietf.org/html/rfc1893">RFC 1893</a>, + January 1996. + +<span class="h2"><h2><a class="selflink" name="section-10" href="#section-10">10</a>. Editor's Address</h2></span> + + John C. Klensin + AT&T Laboratories + 99 Bedford St + Boston, MA 02111 USA + + Phone: 617-574-3076 + EMail: klensin@research.att.com + +<span class="h2"><h2><a class="selflink" name="section-11" href="#section-11">11</a>. Acknowledgments</h2></span> + + Many people worked long and hard on the many iterations of this + document. There was wide-ranging debate in the IETF DRUMS Working + Group, both on its mailing list and in face to face discussions, + about many technical issues and the role of a revised standard for + Internet mail transport, and many contributors helped form the + wording in this specification. The hundreds of participants in the + many discussions since <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> was produced are too numerous to + mention, but they all helped this document become what it is. + + + + + + + +<span class="grey">Klensin Standards Track [Page 70]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-71" id="page-71" href="#page-71" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +APPENDICES + +<span class="h1"><h1><a class="selflink" name="appendix-A" href="#appendix-A">A</a>. TCP Transport Service</h1></span> + + The TCP connection supports the transmission of 8-bit bytes. The + SMTP data is 7-bit ASCII characters. Each character is transmitted + as an 8-bit byte with the high-order bit cleared to zero. Service + extensions may modify this rule to permit transmission of full 8-bit + data bytes as part of the message body, but not in SMTP commands or + responses. + +<span class="h1"><h1><a class="selflink" name="appendix-B" href="#appendix-B">B</a>. Generating SMTP Commands from <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> Headers</h1></span> + + Some systems use <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> headers (only) in a mail submission + protocol, or otherwise generate SMTP commands from <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> headers + when such a message is handed to an MTA from a UA. While the MTA-UA + protocol is a private matter, not covered by any Internet Standard, + there are problems with this approach. For example, there have been + repeated problems with proper handling of "bcc" copies and + redistribution lists when information that conceptually belongs to a + mail envelopes is not separated early in processing from header + information (and kept separate). + + It is recommended that the UA provide its initial ("submission + client") MTA with an envelope separate from the message itself. + However, if the envelope is not supplied, SMTP commands SHOULD be + generated as follows: + + 1. Each recipient address from a TO, CC, or BCC header field SHOULD + be copied to a RCPT command (generating multiple message copies if + that is required for queuing or delivery). This includes any + addresses listed in a <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> "group". Any BCC fields SHOULD then + be removed from the headers. Once this process is completed, the + remaining headers SHOULD be checked to verify that at least one + To:, Cc:, or Bcc: header remains. If none do, then a bcc: header + with no additional information SHOULD be inserted as specified in + [<a href="#ref-32" title='"Internet Message Format"'>32</a>]. + + 2. The return address in the MAIL command SHOULD, if possible, be + derived from the system's identity for the submitting (local) + user, and the "From:" header field otherwise. If there is a + system identity available, it SHOULD also be copied to the Sender + header field if it is different from the address in the From + header field. (Any Sender field that was already there SHOULD be + removed.) Systems may provide a way for submitters to override + the envelope return address, but may want to restrict its use to + privileged users. This will not prevent mail forgery, but may + lessen its incidence; see <a href="#section-7.1">section 7.1</a>. + + + +<span class="grey">Klensin Standards Track [Page 71]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-72" id="page-72" href="#page-72" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + When an MTA is being used in this way, it bears responsibility for + ensuring that the message being transmitted is valid. The mechanisms + for checking that validity, and for handling (or returning) messages + that are not valid at the time of arrival, are part of the MUA-MTA + interface and not covered by this specification. + + A submission protocol based on Standard <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> information alone + MUST NOT be used to gateway a message from a foreign (non-SMTP) mail + system into an SMTP environment. Additional information to construct + an envelope must come from some source in the other environment, + whether supplemental headers or the foreign system's envelope. + + Attempts to gateway messages using only their header "to" and "cc" + fields have repeatedly caused mail loops and other behavior adverse + to the proper functioning of the Internet mail environment. These + problems have been especially common when the message originates from + an Internet mailing list and is distributed into the foreign + environment using envelope information. When these messages are then + processed by a header-only remailer, loops back to the Internet + environment (and the mailing list) are almost inevitable. + +<span class="h1"><h1><a class="selflink" name="appendix-C" href="#appendix-C">C</a>. Source Routes</h1></span> + + Historically, the <reverse-path> was a reverse source routing list of + hosts and a source mailbox. The first host in the <reverse-path> + SHOULD be the host sending the MAIL command. Similarly, the + <forward-path> may be a source routing lists of hosts and a + destination mailbox. However, in general, the <forward-path> SHOULD + contain only a mailbox and domain name, relying on the domain name + system to supply routing information if required. The use of source + routes is deprecated; while servers MUST be prepared to receive and + handle them as discussed in <a href="#section-3.3">section 3.3</a> and F.2, clients SHOULD NOT + transmit them and this section was included only to provide context. + + For relay purposes, the forward-path may be a source route of the + form "@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE fully- + qualified domain names. This form is used to emphasize the + distinction between an address and a route. The mailbox is an + absolute address, and the route is information about how to get + there. The two concepts should not be confused. + + If source routes are used, <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> and the text below should be + consulted for the mechanisms for constructing and updating the + forward- and reverse-paths. + + + + + + + +<span class="grey">Klensin Standards Track [Page 72]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-73" id="page-73" href="#page-73" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + The SMTP server transforms the command arguments by moving its own + identifier (its domain name or that of any domain for which it is + acting as a mail exchanger), if it appears, from the forward-path to + the beginning of the reverse-path. + + Notice that the forward-path and reverse-path appear in the SMTP + commands and replies, but not necessarily in the message. That is, + there is no need for these paths and especially this syntax to appear + in the "To:" , "From:", "CC:", etc. fields of the message header. + Conversely, SMTP servers MUST NOT derive final message delivery + information from message header fields. + + When the list of hosts is present, it is a "reverse" source route and + indicates that the mail was relayed through each host on the list + (the first host in the list was the most recent relay). This list is + used as a source route to return non-delivery notices to the sender. + As each relay host adds itself to the beginning of the list, it MUST + use its name as known in the transport environment to which it is + relaying the mail rather than that of the transport environment from + which the mail came (if they are different). + +<span class="h1"><h1><a class="selflink" name="appendix-D" href="#appendix-D">D</a>. Scenarios</h1></span> + + This section presents complete scenarios of several types of SMTP + sessions. In the examples, "C:" indicates what is said by the SMTP + client, and "S:" indicates what is said by the SMTP server. + +<span class="h1"><h1><a class="selflink" name="appendix-D.1" href="#appendix-D.1">D.1</a> A Typical SMTP Transaction Scenario</h1></span> + + This SMTP example shows mail sent by Smith at host bar.com, to Jones, + Green, and Brown at host foo.com. Here we assume that host bar.com + contacts host foo.com directly. The mail is accepted for Jones and + Brown. Green does not have a mailbox at host foo.com. + + S: 220 foo.com Simple Mail Transfer Service Ready + C: EHLO bar.com + S: 250-foo.com greets bar.com + S: 250-8BITMIME + S: 250-SIZE + S: 250-DSN + S: 250 HELP + C: MAIL FROM:<Smith@bar.com> + S: 250 OK + C: RCPT TO:<Jones@foo.com> + S: 250 OK + C: RCPT TO:<Green@foo.com> + S: 550 No such user here + C: RCPT TO:<Brown@foo.com> + + + +<span class="grey">Klensin Standards Track [Page 73]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-74" id="page-74" href="#page-74" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + S: 250 OK + C: DATA + S: 354 Start mail input; end with <CRLF>.<CRLF> + C: Blah blah blah... + C: ...etc. etc. etc. + C: . + S: 250 OK + C: QUIT + S: 221 foo.com Service closing transmission channel + +<span class="h1"><h1><a class="selflink" name="appendix-D.2" href="#appendix-D.2">D.2</a> Aborted SMTP Transaction Scenario</h1></span> + + S: 220 foo.com Simple Mail Transfer Service Ready + C: EHLO bar.com + S: 250-foo.com greets bar.com + S: 250-8BITMIME + S: 250-SIZE + S: 250-DSN + S: 250 HELP + C: MAIL FROM:<Smith@bar.com> + S: 250 OK + C: RCPT TO:<Jones@foo.com> + S: 250 OK + C: RCPT TO:<Green@foo.com> + S: 550 No such user here + C: RSET + S: 250 OK + C: QUIT + S: 221 foo.com Service closing transmission channel + +<span class="h1"><h1><a class="selflink" name="appendix-D.3" href="#appendix-D.3">D.3</a> Relayed Mail Scenario</h1></span> + + Step 1 -- Source Host to Relay Host + + S: 220 foo.com Simple Mail Transfer Service Ready + C: EHLO bar.com + S: 250-foo.com greets bar.com + S: 250-8BITMIME + S: 250-SIZE + S: 250-DSN + S: 250 HELP + C: MAIL FROM:<JQP@bar.com> + S: 250 OK + C: RCPT TO:<@foo.com:Jones@XYZ.COM> + S: 250 OK + C: DATA + S: 354 Start mail input; end with <CRLF>.<CRLF> + C: Date: Thu, 21 May 1998 05:33:29 -0700 + + + +<span class="grey">Klensin Standards Track [Page 74]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-75" id="page-75" href="#page-75" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + C: From: John Q. Public <JQP@bar.com> + C: Subject: The Next Meeting of the Board + C: To: Jones@xyz.com + C: + C: Bill: + C: The next meeting of the board of directors will be + C: on Tuesday. + C: John. + C: . + S: 250 OK + C: QUIT + S: 221 foo.com Service closing transmission channel + + Step 2 -- Relay Host to Destination Host + + S: 220 xyz.com Simple Mail Transfer Service Ready + C: EHLO foo.com + S: 250 xyz.com is on the air + C: MAIL FROM:<@foo.com:JQP@bar.com> + S: 250 OK + C: RCPT TO:<Jones@XYZ.COM> + S: 250 OK + C: DATA + S: 354 Start mail input; end with <CRLF>.<CRLF> + C: Received: from bar.com by foo.com ; Thu, 21 May 1998 + C: 05:33:29 -0700 + C: Date: Thu, 21 May 1998 05:33:22 -0700 + C: From: John Q. Public <JQP@bar.com> + C: Subject: The Next Meeting of the Board + C: To: Jones@xyz.com + C: + C: Bill: + C: The next meeting of the board of directors will be + C: on Tuesday. + C: John. + C: . + S: 250 OK + C: QUIT + S: 221 foo.com Service closing transmission channel + +<span class="h1"><h1><a class="selflink" name="appendix-D.4" href="#appendix-D.4">D.4</a> Verifying and Sending Scenario</h1></span> + + S: 220 foo.com Simple Mail Transfer Service Ready + C: EHLO bar.com + S: 250-foo.com greets bar.com + S: 250-8BITMIME + S: 250-SIZE + S: 250-DSN + + + +<span class="grey">Klensin Standards Track [Page 75]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-76" id="page-76" href="#page-76" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + + S: 250-VRFY + S: 250 HELP + C: VRFY Crispin + S: 250 Mark Crispin <Admin.MRC@foo.com> + C: SEND FROM:<EAK@bar.com> + S: 250 OK + C: RCPT TO:<Admin.MRC@foo.com> + S: 250 OK + C: DATA + S: 354 Start mail input; end with <CRLF>.<CRLF> + C: Blah blah blah... + C: ...etc. etc. etc. + C: . + S: 250 OK + C: QUIT + S: 221 foo.com Service closing transmission channel + +<span class="h1"><h1><a class="selflink" name="appendix-E" href="#appendix-E">E</a>. Other Gateway Issues</h1></span> + + In general, gateways between the Internet and other mail systems + SHOULD attempt to preserve any layering semantics across the + boundaries between the two mail systems involved. Gateway- + translation approaches that attempt to take shortcuts by mapping, + (such as envelope information from one system to the message headers + or body of another) have generally proven to be inadequate in + important ways. Systems translating between environments that do not + support both envelopes and headers and Internet mail must be written + with the understanding that some information loss is almost + inevitable. + +<span class="h1"><h1><a class="selflink" name="appendix-F" href="#appendix-F">F</a>. Deprecated Features of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a></h1></span> + + A few features of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> have proven to be problematic and SHOULD + NOT be used in Internet mail. + +<span class="h1"><h1><a class="selflink" name="appendix-F.1" href="#appendix-F.1">F.1</a> TURN</h1></span> + + This command, described in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>, raises important security issues + since, in the absence of strong authentication of the host requesting + that the client and server switch roles, it can easily be used to + divert mail from its correct destination. Its use is deprecated; + SMTP systems SHOULD NOT use it unless the server can authenticate the + client. + + + + + + + + +<span class="grey">Klensin Standards Track [Page 76]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-77" id="page-77" href="#page-77" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h1"><h1><a class="selflink" name="appendix-F.2" href="#appendix-F.2">F.2</a> Source Routing</h1></span> + + <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> utilized the concept of explicit source routing to get mail + from one host to another via a series of relays. The requirement to + utilize source routes in regular mail traffic was eliminated by the + introduction of the domain name system "MX" record and the last + significant justification for them was eliminated by the + introduction, in <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a>, of a clear requirement that addresses + following an "@" must all be fully-qualified domain names. + Consequently, the only remaining justifications for the use of source + routes are support for very old SMTP clients or MUAs and in mail + system debugging. They can, however, still be useful in the latter + circumstance and for routing mail around serious, but temporary, + problems such as problems with the relevant DNS records. + + SMTP servers MUST continue to accept source route syntax as specified + in the main body of this document and in <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a>. They MAY, if + necessary, ignore the routes and utilize only the target domain in + the address. If they do utilize the source route, the message MUST + be sent to the first domain shown in the address. In particular, a + server MUST NOT guess at shortcuts within the source route. + + Clients SHOULD NOT utilize explicit source routing except under + unusual circumstances, such as debugging or potentially relaying + around firewall or mail system configuration errors. + +<span class="h1"><h1><a class="selflink" name="appendix-F.3" href="#appendix-F.3">F.3</a> HELO</h1></span> + + As discussed in sections <a href="#section-3.1">3.1</a> and <a href="#section-4.1.1">4.1.1</a>, EHLO is strongly preferred to + HELO when the server will accept the former. Servers must continue + to accept and process HELO in order to support older clients. + +<span class="h1"><h1><a class="selflink" name="appendix-F.4" href="#appendix-F.4">F.4</a> #-literals</h1></span> + + <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> provided for specifying an Internet address as a decimal + integer host number prefixed by a pound sign, "#". In practice, that + form has been obsolete since the introduction of TCP/IP. It is + deprecated and MUST NOT be used. + +<span class="h1"><h1><a class="selflink" name="appendix-F.5" href="#appendix-F.5">F.5</a> Dates and Years</h1></span> + + When dates are inserted into messages by SMTP clients or servers + (e.g., in trace fields), four-digit years MUST BE used. Two-digit + years are deprecated; three-digit years were never permitted in the + Internet mail system. + + + + + + +<span class="grey">Klensin Standards Track [Page 77]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-78" id="page-78" href="#page-78" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +<span class="h1"><h1><a class="selflink" name="appendix-F.6" href="#appendix-F.6">F.6</a> Sending versus Mailing</h1></span> + + In addition to specifying a mechanism for delivering messages to + user's mailboxes, <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> provided additional, optional, commands to + deliver messages directly to the user's terminal screen. These + commands (SEND, SAML, SOML) were rarely implemented, and changes in + workstation technology and the introduction of other protocols may + have rendered them obsolete even where they are implemented. + + Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers + MAY implement them. If they are implemented by servers, the + implementation model specified in <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> MUST be used and the + command names MUST be published in the response to the EHLO command. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Klensin Standards Track [Page 78]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-79" id="page-79" href="#page-79" class="invisible"> </a> +<span class="grey"><a href="#">RFC 2821</a> Simple Mail Transfer Protocol April 2001</span> + + +Full Copyright Statement + + Copyright (C) The Internet Society (2001). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Klensin Standards Track [Page 79] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.109, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/docs/RFC 3977 - Network News Transfer Protocol (NNTP).html b/docs/RFC 3977 - Network News Transfer Protocol (NNTP).html new file mode 100644 index 0000000..7ded014 --- /dev/null +++ b/docs/RFC 3977 - Network News Transfer Protocol (NNTP).html @@ -0,0 +1,7068 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.109"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Relation.Replaces" content="rfc977"> +<meta name="DC.Identifier" content="urn:ietf:rfc:3977"> +<meta name="DC.Date.Issued" content="October, 2006"> +<meta name="DC.Creator" content="Clive D.W. Feather <clive@demon.net>"> +<meta name="DC.Description.Abstract" content="The Network News Transfer Protocol (NNTP) has been in use in the\nInternet for a decade, and remains one of the most popular protocols\n(by volume) in use today. This document is a replacement for RFC 977,\nand officially updates the protocol specification. It clarifies some\nvagueness in RFC 977, includes some new base functionality, and\nprovides a specific mechanism to add standardized extensions to NNTP.\n[STANDARDS-TRACK]"> +<meta name="DC.Title" content="Network News Transfer Protocol (NNTP)"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 3977 - Network News Transfer Protocol (NNTP)</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgblue { background-color: rgb(102, 102, 255); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgblue" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="https://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="https://tools.ietf.org/rfc/rfc3977.txt" title="Plaintext version of this document">txt</a>|<a href="https://tools.ietf.org/pdf/rfc3977" title="PDF version of this document">pdf</a>] [<a href="https://tools.ietf.org/html/draft-ietf-nntpext-base" title="draft-ietf-nntpext-base">draft-ietf-nntpex...</a>] [<a href="https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=rfc3977" title="Inline diff (wdiff)">Diff1</a>] [<a href="https://tools.ietf.org/rfcdiff?url2=rfc3977" title="Side-by-side diff">Diff2</a>] [<a href="https://www.rfc-editor.org/errata_search.php?rfc=3977">Errata</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo">Updated by: <a href="https://tools.ietf.org/html/rfc6048">6048</a> PROPOSED STANDARD</span><br> +<span class="pre noprint docinfo"> <span style="color: #C00;">Errata Exist</span></span><br> +<pre>Network Working Group C. Feather +Request for Comments: 3977 THUS plc +Obsoletes: <a href="https://tools.ietf.org/html/rfc977">977</a> October 2006 +Updates: <a href="https://tools.ietf.org/html/rfc2980">2980</a> +Category: Standards Track + + + <span class="h1"><h1>Network News Transfer Protocol (NNTP)</h1></span> + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2006). + +Abstract + + The Network News Transfer Protocol (NNTP) has been in use in the + Internet for a decade, and remains one of the most popular protocols + (by volume) in use today. This document is a replacement for + <a href="https://tools.ietf.org/html/rfc977">RFC 977</a>, and officially updates the protocol specification. It + clarifies some vagueness in <a href="https://tools.ietf.org/html/rfc977">RFC 977</a>, includes some new base + functionality, and provides a specific mechanism to add standardized + extensions to NNTP. + +Table of Contents + + <a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-3">3</a> + <a href="#section-1.1">1.1</a>. Author's Note . . . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a> + <a href="#section-2">2</a>. Notation . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a> + <a href="#section-3">3</a>. Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a> + <a href="#section-3.1">3.1</a>. Commands and Responses . . . . . . . . . . . . . . . . . <a href="#page-6">6</a> + <a href="#section-3.1.1">3.1.1</a>. Multi-line Data Blocks . . . . . . . . . . . . . . . . <a href="#page-8">8</a> + <a href="#section-3.2">3.2</a>. Response Codes . . . . . . . . . . . . . . . . . . . . . <a href="#page-9">9</a> + <a href="#section-3.2.1">3.2.1</a>. Generic Response Codes . . . . . . . . . . . . . . . <a href="#page-10">10</a> + <a href="#section-3.2.1.1">3.2.1.1</a>. Examples . . . . . . . . . . . . . . . . . . . . <a href="#page-12">12</a> + <a href="#section-3.3">3.3</a>. Capabilities and Extensions . . . . . . . . . . . . . . . <a href="#page-14">14</a> + <a href="#section-3.3.1">3.3.1</a>. Capability Descriptions . . . . . . . . . . . . . . . <a href="#page-14">14</a> + <a href="#section-3.3.2">3.3.2</a>. Standard Capabilities . . . . . . . . . . . . . . . . <a href="#page-15">15</a> + <a href="#section-3.3.3">3.3.3</a>. Extensions . . . . . . . . . . . . . . . . . . . . . <a href="#page-16">16</a> + <a href="#section-3.3.4">3.3.4</a>. Initial IANA Register . . . . . . . . . . . . . . . . <a href="#page-18">18</a> + <a href="#section-3.4">3.4</a>. Mandatory and Optional Commands . . . . . . . . . . . . . <a href="#page-20">20</a> + + + +<span class="grey">Feather Standards Track [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + <a href="#section-3.4.1">3.4.1</a>. Reading and Transit Servers . . . . . . . . . . . . . <a href="#page-21">21</a> + <a href="#section-3.4.2">3.4.2</a>. Mode Switching . . . . . . . . . . . . . . . . . . . <a href="#page-21">21</a> + <a href="#section-3.5">3.5</a>. Pipelining . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-22">22</a> + <a href="#section-3.5.1">3.5.1</a>. Examples . . . . . . . . . . . . . . . . . . . . . . <a href="#page-23">23</a> + <a href="#section-3.6">3.6</a>. Articles . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-24">24</a> + <a href="#section-4">4</a>. The WILDMAT Format . . . . . . . . . . . . . . . . . . . . . <a href="#page-25">25</a> + <a href="#section-4.1">4.1</a>. Wildmat Syntax . . . . . . . . . . . . . . . . . . . . . <a href="#page-26">26</a> + <a href="#section-4.2">4.2</a>. Wildmat Semantics . . . . . . . . . . . . . . . . . . . . <a href="#page-26">26</a> + <a href="#section-4.3">4.3</a>. Extensions . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-27">27</a> + <a href="#section-4.4">4.4</a>. Examples . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-27">27</a> + <a href="#section-5">5</a>. Session Administration Commands . . . . . . . . . . . . . . . <a href="#page-28">28</a> + <a href="#section-5.1">5.1</a>. Initial Connection . . . . . . . . . . . . . . . . . . . <a href="#page-28">28</a> + <a href="#section-5.2">5.2</a>. CAPABILITIES . . . . . . . . . . . . . . . . . . . . . . <a href="#page-29">29</a> + <a href="#section-5.3">5.3</a>. MODE READER . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-32">32</a> + <a href="#section-5.4">5.4</a>. QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a> + <a href="#section-6">6</a>. Article Posting and Retrieval . . . . . . . . . . . . . . . . <a href="#page-35">35</a> + <a href="#section-6.1">6.1</a>. Group and Article Selection . . . . . . . . . . . . . . . <a href="#page-36">36</a> + <a href="#section-6.1.1">6.1.1</a>. GROUP . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a> + <a href="#section-6.1.2">6.1.2</a>. LISTGROUP . . . . . . . . . . . . . . . . . . . . . . <a href="#page-39">39</a> + <a href="#section-6.1.3">6.1.3</a>. LAST . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-42">42</a> + <a href="#section-6.1.4">6.1.4</a>. NEXT . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-44">44</a> + <a href="#section-6.2">6.2</a>. Retrieval of Articles and Article Sections . . . . . . . <a href="#page-45">45</a> + <a href="#section-6.2.1">6.2.1</a>. ARTICLE . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-46">46</a> + <a href="#section-6.2.2">6.2.2</a>. HEAD . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-49">49</a> + <a href="#section-6.2.3">6.2.3</a>. BODY . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-51">51</a> + <a href="#section-6.2.4">6.2.4</a>. STAT . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-53">53</a> + <a href="#section-6.3">6.3</a>. Article Posting . . . . . . . . . . . . . . . . . . . . . <a href="#page-56">56</a> + <a href="#section-6.3.1">6.3.1</a>. POST . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-56">56</a> + <a href="#section-6.3.2">6.3.2</a>. IHAVE . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-58">58</a> + <a href="#section-7">7</a>. Information Commands . . . . . . . . . . . . . . . . . . . . <a href="#page-61">61</a> + <a href="#section-7.1">7.1</a>. DATE . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-61">61</a> + <a href="#section-7.2">7.2</a>. HELP . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-62">62</a> + <a href="#section-7.3">7.3</a>. NEWGROUPS . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-63">63</a> + <a href="#section-7.4">7.4</a>. NEWNEWS . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-64">64</a> + <a href="#section-7.5">7.5</a>. Time . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-65">65</a> + <a href="#section-7.5.1">7.5.1</a>. Examples . . . . . . . . . . . . . . . . . . . . . . <a href="#page-66">66</a> + <a href="#section-7.6">7.6</a>. The LIST Commands . . . . . . . . . . . . . . . . . . . . <a href="#page-66">66</a> + <a href="#section-7.6.1">7.6.1</a>. LIST . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-67">67</a> + <a href="#section-7.6.2">7.6.2</a>. Standard LIST Keywords . . . . . . . . . . . . . . . <a href="#page-69">69</a> + <a href="#section-7.6.3">7.6.3</a>. LIST ACTIVE . . . . . . . . . . . . . . . . . . . . . <a href="#page-70">70</a> + <a href="#section-7.6.4">7.6.4</a>. LIST ACTIVE.TIMES . . . . . . . . . . . . . . . . . . <a href="#page-71">71</a> + <a href="#section-7.6.5">7.6.5</a>. LIST DISTRIB.PATS . . . . . . . . . . . . . . . . . . <a href="#page-72">72</a> + <a href="#section-7.6.6">7.6.6</a>. LIST NEWSGROUPS . . . . . . . . . . . . . . . . . . . <a href="#page-73">73</a> + <a href="#section-8">8</a>. Article Field Access Commands . . . . . . . . . . . . . . . . <a href="#page-73">73</a> + <a href="#section-8.1">8.1</a>. Article Metadata . . . . . . . . . . . . . . . . . . . . <a href="#page-74">74</a> + <a href="#section-8.1.1">8.1.1</a>. The :bytes Metadata Item . . . . . . . . . . . . . . <a href="#page-74">74</a> + <a href="#section-8.1.2">8.1.2</a>. The :lines Metadata Item . . . . . . . . . . . . . . <a href="#page-75">75</a> + <a href="#section-8.2">8.2</a>. Database Consistency . . . . . . . . . . . . . . . . . . <a href="#page-75">75</a> + + + +<span class="grey">Feather Standards Track [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + <a href="#section-8.3">8.3</a>. OVER . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-76">76</a> + <a href="#section-8.4">8.4</a>. LIST OVERVIEW.FMT . . . . . . . . . . . . . . . . . . . . <a href="#page-81">81</a> + <a href="#section-8.5">8.5</a>. HDR . . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-83">83</a> + <a href="#section-8.6">8.6</a>. LIST HEADERS . . . . . . . . . . . . . . . . . . . . . . <a href="#page-87">87</a> + <a href="#section-9">9</a>. Augmented BNF Syntax for NNTP . . . . . . . . . . . . . . . . <a href="#page-90">90</a> + <a href="#section-9.1">9.1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . <a href="#page-90">90</a> + <a href="#section-9.2">9.2</a>. Commands . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-92">92</a> + <a href="#section-9.3">9.3</a>. Command Continuation . . . . . . . . . . . . . . . . . . <a href="#page-93">93</a> + <a href="#section-9.4">9.4</a>. Responses . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-93">93</a> + <a href="#section-9.4.1">9.4.1</a>. Generic Responses . . . . . . . . . . . . . . . . . . <a href="#page-93">93</a> + <a href="#section-9.4.2">9.4.2</a>. Initial Response Line Contents . . . . . . . . . . . <a href="#page-94">94</a> + <a href="#section-9.4.3">9.4.3</a>. Multi-line Response Contents . . . . . . . . . . . . <a href="#page-94">94</a> + <a href="#section-9.5">9.5</a>. Capability Lines . . . . . . . . . . . . . . . . . . . . <a href="#page-95">95</a> + <a href="#section-9.6">9.6</a>. LIST Variants . . . . . . . . . . . . . . . . . . . . . . <a href="#page-96">96</a> + <a href="#section-9.7">9.7</a>. Articles . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-97">97</a> + <a href="#section-9.8">9.8</a>. General Non-terminals . . . . . . . . . . . . . . . . . . <a href="#page-97">97</a> + <a href="#section-9.9">9.9</a>. Extensions and Validation . . . . . . . . . . . . . . . . <a href="#page-99">99</a> + <a href="#section-10">10</a>. Internationalisation Considerations . . . . . . . . . . . . .<a href="#page-100">100</a> + <a href="#section-10.1">10.1</a>. Introduction and Historical Situation . . . . . . . . . .<a href="#page-100">100</a> + <a href="#section-10.2">10.2</a>. This Specification . . . . . . . . . . . . . . . . . . .<a href="#page-101">101</a> + <a href="#section-10.3">10.3</a>. Outstanding Issues . . . . . . . . . . . . . . . . . . .<a href="#page-102">102</a> + <a href="#section-11">11</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . .<a href="#page-103">103</a> + <a href="#section-12">12</a>. Security Considerations . . . . . . . . . . . . . . . . . . .<a href="#page-103">103</a> + <a href="#section-12.1">12.1</a>. Personal and Proprietary Information . . . . . . . . . .<a href="#page-104">104</a> + <a href="#section-12.2">12.2</a>. Abuse of Server Log Information . . . . . . . . . . . . .<a href="#page-104">104</a> + <a href="#section-12.3">12.3</a>. Weak Authentication and Access Control . . . . . . . . .<a href="#page-104">104</a> + <a href="#section-12.4">12.4</a>. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . .<a href="#page-104">104</a> + <a href="#section-12.5">12.5</a>. UTF-8 Issues . . . . . . . . . . . . . . . . . . . . . .<a href="#page-105">105</a> + <a href="#section-12.6">12.6</a>. Caching of Capability Lists . . . . . . . . . . . . . . .<a href="#page-106">106</a> + <a href="#section-13">13</a>. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .<a href="#page-107">107</a> + <a href="#section-14">14</a>. References . . . . . . . . . . . . . . . . . . . . . . . . .<a href="#page-110">110</a> + <a href="#section-14.1">14.1</a>. Normative References . . . . . . . . . . . . . . . . . .<a href="#page-110">110</a> + <a href="#section-14.2">14.2</a>. Informative References . . . . . . . . . . . . . . . . .<a href="#page-110">110</a> + <a href="#appendix-A">A</a>. Interaction with Other Specifications . . . . . . . . . . . .<a href="#page-112">112</a> + <a href="#appendix-A.1">A.1</a>. Header Folding . . . . . . . . . . . . . . . . . . . . .<a href="#page-112">112</a> + <a href="#appendix-A.2">A.2</a>. Message-IDs . . . . . . . . . . . . . . . . . . . . . . .<a href="#page-112">112</a> + <a href="#appendix-A.3">A.3</a>. Article Posting . . . . . . . . . . . . . . . . . . . . .<a href="#page-114">114</a> + <a href="#appendix-B">B</a>. Summary of Commands . . . . . . . . . . . . . . . . . . . . .<a href="#page-115">115</a> + <a href="#appendix-C">C</a>. Summary of Response Codes . . . . . . . . . . . . . . . . . .<a href="#page-117">117</a> + <a href="#appendix-D">D</a>. Changes from <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> . . . . . . . . . . . . . . . . . . . .<a href="#page-121">121</a> + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</h2></span> + + This document specifies the Network News Transfer Protocol (NNTP), + which is used for the distribution, inquiry, retrieval, and posting + of Netnews articles using a reliable stream-based mechanism. For + news-reading clients, NNTP enables retrieval of news articles that + + + + +<span class="grey">Feather Standards Track [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + are stored in a central database, giving subscribers the ability to + select only those articles they wish to read. + + The Netnews model provides for indexing, cross-referencing, and + expiration of aged messages. NNTP is designed for efficient + transmission of Netnews articles over a reliable full duplex + communication channel. + + Although the protocol specification in this document is largely + compatible with the version specified in <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> [<a href="https://tools.ietf.org/html/rfc977" title='"Network News Transfer Protocol"'>RFC977</a>], a number + of changes are summarised in <a href="#appendix-D">Appendix D</a>. In particular: + + o the default character set is changed from US-ASCII [<a href="#ref-ANSI1986" title='"Coded Character Set - 7-bit American Standard Code for Information Interchange"'>ANSI1986</a>] to + UTF-8 [<a href="https://tools.ietf.org/html/rfc3629" title='"UTF-8, a transformation format of ISO 10646"'>RFC3629</a>] (note that US-ASCII is a subset of UTF-8); + + o a number of commands that were optional in <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> or that have + been taken from <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a> [<a href="https://tools.ietf.org/html/rfc2980" title='"Common NNTP Extensions"'>RFC2980</a>] are now mandatory; and + + o a CAPABILITIES command has been added to allow clients to + determine what functionality is available from a server. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in <a href="https://tools.ietf.org/html/rfc2119">RFC 2119</a> [<a href="https://tools.ietf.org/html/rfc2119" title='"Key words for use in RFCs to Indicate Requirement Levels"'>RFC2119</a>]. + + An implementation is not compliant if it fails to satisfy one or more + of the MUST requirements for this protocol. An implementation that + satisfies all the MUST and all the SHOULD requirements for its + protocols is said to be "unconditionally compliant"; one that + satisfies all the MUST requirements but not all the SHOULD + requirements for NNTP is said to be "conditionally compliant". + + For the remainder of this document, the terms "client" and "client + host" refer to a host making use of the NNTP service, while the terms + "server" and "server host" refer to a host that offers the NNTP + service. + +<span class="h3"><h3><a class="selflink" name="section-1.1" href="#section-1.1">1.1</a>. Author's Note</h3></span> + + This document is written in XML using an NNTP-specific DTD. Custom + software is used to convert this to <a href="https://tools.ietf.org/html/rfc2629">RFC 2629</a> [<a href="https://tools.ietf.org/html/rfc2629" title='"Writing I-Ds and RFCs using XML"'>RFC2629</a>] format, and + then the public "xml2rfc" package to further reduce this to text, + nroff source, and HTML. + + No perl was used in producing this document. + + + + + + +<span class="grey">Feather Standards Track [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. Notation</h2></span> + + The following notational conventions are used in this document. + + UPPERCASE indicates literal text to be included in the + command. + + lowercase indicates a token described elsewhere. + + [<a name="ref-brackets" id="ref-brackets">brackets</a>] indicate that the enclosed material is optional. + + elliptical indicates that the argument may be repeated any + ... marks number of times (it must occur at least once). + + vertical|bar indicates a choice of two mutually exclusive + arguments (exactly one must be provided). + + The name "message-id" for a command or response argument indicates + that it is the message-id of an article as described in <a href="#section-3.6">Section 3.6</a>, + including the angle brackets. + + The name "wildmat" for an argument indicates that it is a wildmat as + defined in <a href="#section-4">Section 4</a>. If the argument does not meet the requirements + of that section (for example, if it does not fit the grammar of + <a href="#section-4.1">Section 4.1</a>), the NNTP server MAY place some interpretation on it + (not specified by this document) or otherwise MUST treat it as a + syntax error. + + Responses for each command will be described in tables listing the + required format of a response followed by the meaning that should be + ascribed to that response. + + The terms "NUL", "TAB", "LF", "CR, and "space" refer to the octets + %x00, %x09, %x0A, %x0D, and %x20, respectively (that is, the octets + with those codes in US-ASCII [<a href="#ref-ANSI1986" title='"Coded Character Set - 7-bit American Standard Code for Information Interchange"'>ANSI1986</a>] and thus in UTF-8 [<a href="https://tools.ietf.org/html/rfc3629" title='"UTF-8, a transformation format of ISO 10646"'>RFC3629</a>]). + The term "CRLF" or "CRLF pair" means the sequence CR immediately + followed by LF (that is, %x0D.0A). A "printable US-ASCII character" + is an octet in the range %x21-7E. Quoted characters refer to the + octets with those codes in US-ASCII (so "." and "<" refer to %x2E and + %x3C) and will always be printable US-ASCII characters; similarly, + "digit" refers to the octets %x30-39. + + A "keyword" MUST consist only of US-ASCII letters, digits, and the + characters dot (".") and dash ("-") and MUST begin with a letter. + Keywords MUST be at least three characters in length. + + + + + + +<span class="grey">Feather Standards Track [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Examples in this document are not normative but serve to illustrate + usages, arguments, and responses. In the examples, a "[<a href="#ref-C" title='"Demo User"'>C</a>]" will be + used to represent the client host and an "[S]" will be used to + represent the server host. Most of the examples do not rely on a + particular server state. In some cases, however, they do assume that + the currently selected newsgroup (see the GROUP command, + <a href="#section-6.1.1">Section 6.1.1</a>) is invalid; when so, this is indicated at the start of + the example. Examples may use commands or other keywords not defined + in this specification (such as an XENCRYPT command). These will be + used to illustrate some point and do not imply that any such command + is defined elsewhere or needs to exist in any particular + implementation. + + Terms that might be read as specifying details of a client or server + implementation, such as "database", are used simply to ease + description. Provided that implementations conform to the protocol + and format specifications in this document, no specific technique is + mandated. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. Basic Concepts</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-3.1" href="#section-3.1">3.1</a>. Commands and Responses</h3></span> + + NNTP operates over any reliable bi-directional 8-bit-wide data stream + channel. When the connection is established, the NNTP server host + MUST send a greeting. The client host and server host then exchange + commands and responses (respectively) until the connection is closed + or aborted. If the connection used is TCP, then the server host + starts the NNTP service by listening on a TCP port. When a client + host wishes to make use of the service, it MUST establish a TCP + connection with the server host by connecting to that host on the + same port on which the server is listening. + + The character set for all NNTP commands is UTF-8 [<a href="https://tools.ietf.org/html/rfc3629" title='"UTF-8, a transformation format of ISO 10646"'>RFC3629</a>]. Commands + in NNTP MUST consist of a keyword, which MAY be followed by one or + more arguments. A CRLF pair MUST terminate all commands. Multiple + commands MUST NOT be on the same line. Unless otherwise noted + elsewhere in this document, arguments SHOULD consist of printable US- + ASCII characters. Keywords and arguments MUST each be separated by + one or more space or TAB characters. Command lines MUST NOT exceed + 512 octets, which includes the terminating CRLF pair. The arguments + MUST NOT exceed 497 octets. A server MAY relax these limits for + commands defined in an extension. + + Where this specification permits UTF-8 characters outside the range + of U+0000 to U+007F, implementations MUST NOT use the Byte Order Mark + (U+FEFF, encoding %xEF.BB.BF) and MUST use the Word Joiner (U+2060, + encoding %xE2.91.A0) for the meaning Zero Width No-Break Space in + + + +<span class="grey">Feather Standards Track [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + command lines and the initial lines of responses. Implementations + SHOULD apply these same principles throughout. + + The term "character" means a single Unicode code point. + Implementations are not required to carry out Unicode normalisation. + Thus, U+0084 (A-dieresis) is one character, while U+0041 U+0308 (A + composed with dieresis) is two; the two need not be treated as + equivalent. + + Commands may have variants; if so, they use a second keyword + immediately after the first to indicate which variant is required. + The only such commands in this specification are LIST and MODE. Note + that such variants are sometimes referred to as if they were commands + in their own right: "the LIST ACTIVE" command should be read as + shorthand for "the ACTIVE variant of the LIST command". + + Keywords are case insensitive; the case of keywords for commands MUST + be ignored by the server. Command and response arguments are case or + language specific only when stated, either in this document or in + other relevant specifications. + + In some cases, a command involves more data than just a single line. + The further data may be sent either immediately after the command + line (there are no instances of this in this specification, but there + are in extensions such as [<a href="#ref-NNTP-STREAM" title='"Network News Transfer Protocol (NNTP) Extension for Streaming Feeds"'>NNTP-STREAM</a>]) or following a request from + the server (indicated by a 3xx response). + + Each response MUST start with a three-digit response code that is + sufficient to distinguish all responses. Certain valid responses are + defined to be multi-line; for all others, the response is contained + in a single line. The initial line of the response MUST NOT exceed + 512 octets, which includes the response code and the terminating CRLF + pair; an extension MAY specify a greater maximum for commands that it + defines, but not for any other command. Single-line responses + consist of an initial line only. Multi-line responses consist of an + initial line followed by a multi-line data block. + + An NNTP server MAY have an inactivity autologout timer. Such a timer + SHOULD be of at least three minutes' duration, with the exception + that there MAY be a shorter limit on how long the server is willing + to wait for the first command from the client. The receipt of any + command from the client during the timer interval SHOULD suffice to + reset the autologout timer. Similarly, the receipt of any + significant amount of data from a client that is sending a multi-line + data block (such as during a POST or IHAVE command) SHOULD suffice to + reset the autologout timer. When the timer expires, the server + SHOULD close the connection without sending any response to the + client. + + + +<span class="grey">Feather Standards Track [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-3.1.1" href="#section-3.1.1">3.1.1</a>. Multi-line Data Blocks</h4></span> + + A multi-line data block is used in certain commands and responses. + It MUST adhere to the following rules: + + 1. The block consists of a sequence of zero or more "lines", each + being a stream of octets ending with a CRLF pair. Apart from + those line endings, the stream MUST NOT include the octets NUL, + LF, or CR. + + 2. In a multi-line response, the block immediately follows the CRLF + at the end of the initial line of the response. When used in any + other context, the specific command will define when the block is + sent. + + 3. If any line of the data block begins with the "termination octet" + ("." or %x2E), that line MUST be "dot-stuffed" by prepending an + additional termination octet to that line of the block. + + 4. The lines of the block MUST be followed by a terminating line + consisting of a single termination octet followed by a CRLF pair + in the normal way. Thus, unless it is empty, a multi-line block + is always terminated with the five octets CRLF "." CRLF + (%x0D.0A.2E.0D.0A). + + 5. When a multi-line block is interpreted, the "dot-stuffing" MUST + be undone; i.e., the recipient MUST ensure that, in any line + beginning with the termination octet followed by octets other + than a CRLF pair, that initial termination octet is disregarded. + + 6. Likewise, the terminating line ("." CRLF or %x2E.0D.0A) MUST NOT + be considered part of the multi-line block; i.e., the recipient + MUST ensure that any line beginning with the termination octet + followed immediately by a CRLF pair is disregarded. (The first + CRLF pair of the terminating CRLF "." CRLF of a non-empty block + is, of course, part of the last line of the block.) + + Note that texts using an encoding (such as UTF-16 or UTF-32) that may + contain the octets NUL, LF, or CR other than a CRLF pair cannot be + reliably conveyed in the above format (that is, they violate the MUST + requirement above). However, except when stated otherwise, this + specification does not require the content to be UTF-8, and therefore + (subject to that same requirement) it MAY include octets above and + below 128 mixed arbitrarily. + + This document does not place any limit on the length of a line in a + multi-line block. However, the standards that define the format of + articles may do so. + + + +<span class="grey">Feather Standards Track [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-3.2" href="#section-3.2">3.2</a>. Response Codes</h3></span> + + Each response MUST begin with a three-digit status indicator. These + are status reports from the server and indicate the response to the + last command received from the client. + + The first digit of the response broadly indicates the success, + failure, or progress of the previous command: + + 1xx - Informative message + 2xx - Command completed OK + 3xx - Command OK so far; send the rest of it + 4xx - Command was syntactically correct but failed for some reason + 5xx - Command unknown, unsupported, unavailable, or syntax error + + The next digit in the code indicates the function response category: + + x0x - Connection, setup, and miscellaneous messages + x1x - Newsgroup selection + x2x - Article selection + x3x - Distribution functions + x4x - Posting + x8x - Reserved for authentication and privacy extensions + x9x - Reserved for private use (non-standard extensions) + + Certain responses contain arguments such as numbers and names in + addition to the status indicator. In those cases, to simplify + interpretation by the client, the number and type of such arguments + is fixed for each response code, as is whether the code is + single-line or multi-line. Any extension MUST follow this principle + as well. Note that, for historical reasons, the 211 response code is + an exception to this in that the response may be single-line or + multi-line depending on the command (GROUP or LISTGROUP) that + generated it. In all other cases, the client MUST only use the + status indicator itself to determine the nature of the response. The + exact response codes that can be returned by any given command are + detailed in the description of that command. + + Arguments MUST be separated from the numeric status indicator and + from each other by a single space. All numeric arguments MUST be in + base 10 (decimal) format and MAY have leading zeros. String + arguments MUST contain at least one character and MUST NOT contain + TAB, LF, CR, or space. The server MAY add any text after the + response code or last argument, as appropriate, and the client MUST + NOT make decisions based on this text. Such text MUST be separated + from the numeric status indicator or the last argument by at least + one space. + + + + +<span class="grey">Feather Standards Track [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The server MUST respond to any command with the appropriate generic + response (given in <a href="#section-3.2.1">Section 3.2.1</a>) if it represents the situation. + Otherwise, each recognized command MUST return one of the response + codes specifically listed in its description or in an extension. A + server MAY provide extensions to this specification, including new + commands, new variants or features of existing commands, and other + ways of changing the internal state of the server. However, the + server MUST NOT produce any other responses to a client that does not + invoke any of the additional features. (Therefore, a client that + restricts itself to this specification will only receive the + responses that are listed.) + + If a client receives an unexpected response, it SHOULD use the first + digit of the response to determine the result. For example, an + unexpected 2xx should be taken as success, and an unexpected 4xx or + 5xx as failure. + + Response codes not specified in this document MAY be used for any + installation-specific additional commands also not specified. These + SHOULD be chosen to fit the pattern of x9x specified above. + + Neither this document nor any registered extension (see + <a href="#section-3.3.3">Section 3.3.3</a>) will specify any response codes of the x9x pattern. + (Implementers of extensions are accordingly cautioned not to use such + responses for extensions that may subsequently be submitted for + registration.) + +<span class="h4"><h4><a class="selflink" name="section-3.2.1" href="#section-3.2.1">3.2.1</a>. Generic Response Codes</h4></span> + + The server MUST respond to any command with the appropriate one of + the following generic responses if it represents the situation. + + If the command is not recognized, or if it is an optional command + that is not implemented by the server, the response code 500 MUST be + returned. + + If there is a syntax error in the arguments of a recognized command, + including the case where more arguments are provided than the command + specifies or the command line is longer than the server accepts, the + response code 501 MUST be returned. The line MUST NOT be truncated + or split and then interpreted. Note that where a command has + variants depending on a second keyword (e.g., LIST ACTIVE and LIST + NEWSGROUPS), 501 MUST be used when the base command is implemented + but the requested variant is not, and 500 MUST be used only when the + base command itself is not implemented. + + If an argument is required to be a base64-encoded string [<a href="https://tools.ietf.org/html/rfc4648" title='"The Base16, Base32, and Base64 Data Encodings"'>RFC4648</a>] + (there are no such arguments in this specification, but there may be + + + +<span class="grey">Feather Standards Track [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + in extensions) and is not validly encoded, the response code 504 MUST + be returned. + + If the server experiences an internal fault or problem that means it + is unable to carry out the command (for example, a necessary file is + missing or a necessary service could not be contacted), the response + code 403 MUST be returned. If the server recognizes the command but + does not provide an optional feature (for example, because it does + not store the required information), or if it only handles a subset + of legitimate cases (see the HDR command, <a href="#section-8.5">Section 8.5</a>, for an + example), the response code 503 MUST be returned. + + If the client is not authorized to use the specified facility when + the server is in its current state, then the appropriate one of the + following response codes MUST be used. + + 502: It is necessary to terminate the connection and to start a new + one with the appropriate authority before the command can be used. + Historically, some mode-switching servers (see <a href="#section-3.4.1">Section 3.4.1</a>) used + this response to indicate that this command will become available + after the MODE READER command (<a href="#section-5.3">Section 5.3</a>) is used, but this + usage does not conform to this specification and MUST NOT be used. + Note that the server MUST NOT close the connection immediately + after a 502 response except at the initial connection + (<a href="#section-5.1">Section 5.1</a>) and with the MODE READER command. + + 480: The client must authenticate itself to the server (that is, it + must provide information as to the identity of the client) before + the facility can be used on this connection. This will involve + the use of an authentication extension such as [<a href="#ref-NNTP-AUTH" title='"Network News Transfer Protocol (NNTP) Extension for Authentication"'>NNTP-AUTH</a>]. + + 483: The client must negotiate appropriate privacy protection on the + connection. This will involve the use of a privacy extension such + as [<a href="#ref-NNTP-TLS" title='"Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP)"'>NNTP-TLS</a>]. + + 401: The client must change the state of the connection in some other + manner. The first argument of the response MUST be the capability + label (see <a href="#section-5.2">Section 5.2</a>) of the facility that provides the + necessary mechanism (usually an extension, which may be a private + extension). The server MUST NOT use this response code except as + specified by the definition of the capability in question. + + If the server has to terminate the connection for some reason, it + MUST give a 400 response code to the next command and then + immediately close the connection. Following a 400 response, clients + SHOULD NOT simply reconnect immediately and retry the same actions. + Rather, a client SHOULD either use an exponentially increasing delay + between retries (e.g., double the waiting time after each 400 + + + +<span class="grey">Feather Standards Track [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + response) or present any associated text to the user for them to + decide whether and when to retry. + + The client MUST be prepared to receive any of these responses for any + command (except, of course, that the server MUST NOT generate a 500 + response code for mandatory commands). + +<span class="h5"><h5><a class="selflink" name="section-3.2.1.1" href="#section-3.2.1.1">3.2.1.1</a>. Examples</h5></span> + + Example of an unknown command: + + [<a name="ref-C" id="ref-C">C</a>] MAIL + [S] 500 Unknown command + + Example of an unsupported command: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] NEWNEWS + [S] LIST ACTIVE NEWSGROUPS + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER + [S] 500 Unknown command + + Example of an unsupported variant: + + [<a name="ref-C" id="ref-C">C</a>] MODE POSTER + [S] 501 Unknown MODE option + + Example of a syntax error: + + [<a name="ref-C" id="ref-C">C</a>] ARTICLE a.message.id@no.angle.brackets + [S] 501 Syntax error + + Example of an overlong command line: + + [<a name="ref-C" id="ref-C">C</a>] HEAD 53 54 55 + [S] 501 Too many arguments + + Example of a bad wildmat: + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE u[ks].* + [S] 501 Syntax error + + + + + + +<span class="grey">Feather Standards Track [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of a base64-encoding error (the second argument is meant to + be base64 encoded): + + [<a name="ref-C" id="ref-C">C</a>] XENCRYPT RSA abcd=efg + [S] 504 Base64 encoding error + + Example of an attempt to access a facility not available to this + connection: + + [<a name="ref-C" id="ref-C">C</a>] MODE READER + [S] 200 Reader mode, posting permitted + [<a href="#ref-C" title='"Demo User"'>C</a>] IHAVE <i.am.an.article.you.will.want@example.com> + [S] 500 Permission denied + + Example of an attempt to access a facility requiring authentication: + + [<a name="ref-C" id="ref-C">C</a>] GROUP secret.group + [S] 480 Permission denied + + Example of a successful attempt following such authentication: + + [<a name="ref-C" id="ref-C">C</a>] XSECRET fred flintstone + [S] 290 Password for fred accepted + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP secret.group + [S] 211 5 1 20 secret.group selected + + Example of an attempt to access a facility requiring privacy: + + [<a name="ref-C" id="ref-C">C</a>] GROUP secret.group + [S] 483 Secure connection required + [<a href="#ref-C" title='"Demo User"'>C</a>] XENCRYPT + [Client and server negotiate encryption on the link] + [S] 283 Encrypted link established + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP secret.group + [S] 211 5 1 20 secret.group selected + + Example of a need to change mode before a facility is used: + + [<a name="ref-C" id="ref-C">C</a>] GROUP binary.group + [S] 401 XHOST Not on this virtual host + [<a href="#ref-C" title='"Demo User"'>C</a>] XHOST binary.news.example.org + [S] 290 binary.news.example.org virtual host selected + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP binary.group + [S] 211 5 1 77 binary.group selected + + + + + + + +<span class="grey">Feather Standards Track [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of a temporary failure: + + [<a name="ref-C" id="ref-C">C</a>] GROUP archive.local + [S] 403 Archive server temporarily offline + + Example of the server needing to close down immediately: + + [<a name="ref-C" id="ref-C">C</a>] ARTICLE 123 + [S] 400 Power supply failed, running on UPS + [Server closes connection.] + +<span class="h3"><h3><a class="selflink" name="section-3.3" href="#section-3.3">3.3</a>. Capabilities and Extensions</h3></span> + + Not all NNTP servers provide exactly the same facilities, both + because this specification allows variation and because servers may + provide extensions. A set of facilities that are related are called + a "capability". This specification provides a way to determine what + capabilities are available, includes a list of standard capabilities, + and includes a mechanism (the extension mechanism) for defining new + capabilities. + +<span class="h4"><h4><a class="selflink" name="section-3.3.1" href="#section-3.3.1">3.3.1</a>. Capability Descriptions</h4></span> + + A client can determine the available capabilities of the server by + using the CAPABILITIES command (<a href="#section-5.2">Section 5.2</a>). This returns a + capability list, which is a list of capability lines. Each line + describes one available capability. + + Each capability line consists of one or more tokens, which MUST be + separated by one or more space or TAB characters. A token is a + string of 1 or more printable UTF-8 characters (that is, either + printable US-ASCII characters or any UTF-8 sequence outside the US- + ASCII range, but not space or TAB). Unless stated otherwise, tokens + are case insensitive. Each capability line consists of the + following: + + o The capability label, which is a keyword indicating the + capability. A capability label may be defined by this + specification or a successor, or by an extension. + + o The label is then followed by zero or more tokens, which are + arguments of the capability. The form and meaning of these tokens + is specific to each capability. + + The server MUST ensure that the capability list accurately reflects + the capabilities (including extensions) currently available. If a + capability is only available with the server in a certain state (for + example, only after authentication), the list MUST only include the + + + +<span class="grey">Feather Standards Track [Page 14]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + capability label when the server is in that state. Similarly, if + only some of the commands in an extension will be available, or if + the behaviour of the extension will change in some other manner, + according to the state of the server, this MUST be indicated by + different arguments in the capability line. + + Note that a capability line can only begin with a letter. Lines + beginning with other characters are reserved for future versions of + this specification. In order to interoperate with such versions, + clients MUST be prepared to receive lines beginning with other + characters and MUST ignore any they do not understand. + +<span class="h4"><h4><a class="selflink" name="section-3.3.2" href="#section-3.3.2">3.3.2</a>. Standard Capabilities</h4></span> + + The following capabilities are defined by this specification. + + VERSION + This capability MUST be advertised by all servers and MUST be the + first capability in the capability list; it indicates the + version(s) of NNTP that the server supports. There must be at + least one argument; each argument is a decimal number and MUST NOT + have a leading zero. Version numbers are assigned only in RFCs + that update or replace this specification; servers MUST NOT create + their own version numbers. + + The version number of this specification is 2. + + READER + This capability indicates that the server implements the various + commands useful for reading clients. + + IHAVE + This capability indicates that the server implements the IHAVE + command. + + POST + This capability indicates that the server implements the POST + command. + + NEWNEWS + This capability indicates that the server implements the NEWNEWS + command. + + HDR + This capability indicates that the server implements the header + access commands (HDR and LIST HEADERS). + + + + + +<span class="grey">Feather Standards Track [Page 15]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + OVER + This capability indicates that the server implements the overview + access commands (OVER and LIST OVERVIEW.FMT). If and only if the + server supports the message-id form of the OVER command, there + must be a single argument MSGID. + + LIST + This capability indicates that the server implements at least one + variant of the LIST command. There MUST be one argument for each + variant of the LIST command supported by the server, giving the + keyword for that variant. + + IMPLEMENTATION + This capability MAY be provided by a server. If so, the arguments + SHOULD be used to provide information such as the server software + name and version number. The client MUST NOT use this line to + determine capabilities of the server. (While servers often + provide this information in the initial greeting, clients need to + guess whether this is the case; this capability makes it clear + what the information is.) + + MODE-READER + This capability indicates that the server is mode-switching + (<a href="#section-3.4.2">Section 3.4.2</a>) and that the MODE READER command needs to be used + to enable the READER capability. + +<span class="h4"><h4><a class="selflink" name="section-3.3.3" href="#section-3.3.3">3.3.3</a>. Extensions</h4></span> + + Although NNTP is widely and robustly deployed, some parts of the + Internet community might wish to extend the NNTP service. It must be + emphasized that any extension to NNTP should not be considered + lightly. NNTP's strength comes primarily from its simplicity. + Experience with many protocols has shown that: + + Protocols with few options tend towards ubiquity, whilst protocols + with many options tend towards obscurity. + + This means that each and every extension, regardless of its benefits, + must be carefully scrutinized with respect to its implementation, + deployment, and interoperability costs. In many cases, the cost of + extending the NNTP service will likely outweigh the benefit. + + An extension is a package of associated facilities, often but not + always including one or more new commands. Each extension MUST + define at least one new capability label (this will often, but need + not, be the name of one of these new commands). While any additional + capability information can normally be specified using arguments to + + + + +<span class="grey">Feather Standards Track [Page 16]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + that label, an extension MAY define more than one capability label. + However, this SHOULD be limited to exceptional circumstances. + + An extension is either a private extension, or its capabilities are + included in the IANA registry of capabilities (see <a href="#section-3.3.4">Section 3.3.4</a>) and + it is defined in an RFC (in which case it is a "registered + extension"). Such RFCs either must be on the standards track or must + define an IESG-approved experimental protocol. + + The definition of an extension must include the following: + + o a descriptive name for the extension. + + o the capability label or labels defined by the extension (the + capability label of a registered extension MUST NOT begin with + "X"). + + o The syntax, values, and meanings of any arguments for each + capability label defined by the extension. + + o Any new NNTP commands associated with the extension (the names of + commands associated with registered extensions MUST NOT begin with + "X"). + + o The syntax and possible values of arguments associated with the + new NNTP commands. + + o The response codes and possible values of arguments for the + responses of the new NNTP commands. + + o Any new arguments the extension associates with any other + pre-existing NNTP commands. + + o Any increase in the maximum length of commands and initial + response lines over the value specified in this document. + + o A specific statement about the effect on pipelining that this + extension may have (if any). + + o A specific statement about the circumstances when use of this + extension can alter the contents of the capabilities list (other + than the new capability labels it defines). + + o A specific statement about the circumstances under which the + extension can cause any pre-existing command to produce a 401, + 480, or 483 response. + + + + + +<span class="grey">Feather Standards Track [Page 17]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + o A description of how the use of MODE READER on a mode-switching + server interacts with the extension. + + o A description of how support for the extension affects the + behaviour of a server and NNTP client in any other manner not + outlined above. + + o Formal syntax as described in <a href="#section-9.9">Section 9.9</a>. + + A private extension MAY or MAY NOT be included in the capabilities + list. If it is, the capability label MUST begin with "X". A server + MAY provide additional keywords (for new commands and also for new + variants of existing commands) as part of a private extension. To + avoid the risk of a clash with a future registered extension, these + keywords SHOULD begin with "X". + + If the server advertises a capability defined by a registered + extension, it MUST implement the extension so as to fully conform + with the specification (for example, it MUST implement all the + commands that the extension describes as mandatory). If it does not + implement the extension as specified, it MUST NOT list the extension + in the capabilities list under its registered name. In that case, it + MAY, but SHOULD NOT, provide a private extension (not listed, or + listed with a different name) that implements part of the extension + or implements the commands of the extension with a different meaning. + + A server MUST NOT send different response codes to basic NNTP + commands documented here or to commands documented in registered + extensions in response to the availability or use of a private + extension. + +<span class="h4"><h4><a class="selflink" name="section-3.3.4" href="#section-3.3.4">3.3.4</a>. Initial IANA Register</h4></span> + + IANA will maintain a registry of NNTP capability labels. All + capability labels in the registry MUST be keywords and MUST NOT begin + with X. + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 18]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The initial content of the registry consists of these entries: + + +-------------------+--------------------------+--------------------+ + | Label | Meaning | Definition | + +-------------------+--------------------------+--------------------+ + | AUTHINFO | Authentication | [<a href="#ref-NNTP-AUTH" title='"Network News Transfer Protocol (NNTP) Extension for Authentication"'>NNTP-AUTH</a>] | + | | | | + | HDR | Batched header retrieval | <a href="#section-3.3.2">Section 3.3.2</a>, | + | | | <a href="#section-8.5">Section 8.5</a>, and | + | | | <a href="#section-8.6">Section 8.6</a> | + | | | | + | IHAVE | IHAVE command available | <a href="#section-3.3.2">Section 3.3.2</a> and | + | | | <a href="#section-6.3.2">Section 6.3.2</a> | + | | | | + | IMPLEMENTATION | Server | <a href="#section-3.3.2">Section 3.3.2</a> | + | | implementation-specific | | + | | information | | + | | | | + | LIST | LIST command variants | <a href="#section-3.3.2">Section 3.3.2</a> and | + | | | <a href="#section-7.6.1">Section 7.6.1</a> | + | | | | + | MODE-READER | Mode-switching server | <a href="#section-3.4.2">Section 3.4.2</a> | + | | and MODE READER command | | + | | available | | + | | | | + | NEWNEWS | NEWNEWS command | <a href="#section-3.3.2">Section 3.3.2</a> and | + | | available | <a href="#section-7.4">Section 7.4</a> | + | | | | + | OVER | Overview support | <a href="#section-3.3.2">Section 3.3.2</a>, | + | | | <a href="#section-8.3">Section 8.3</a>, and | + | | | <a href="#section-8.4">Section 8.4</a> | + | | | | + | POST | POST command available | <a href="#section-3.3.2">Section 3.3.2</a> and | + | | | <a href="#section-6.3.1">Section 6.3.1</a> | + | | | | + | READER | Reader commands | <a href="#section-3.3.2">Section 3.3.2</a> | + | | available | | + | | | | + | SASL | Supported SASL | [<a href="#ref-NNTP-AUTH" title='"Network News Transfer Protocol (NNTP) Extension for Authentication"'>NNTP-AUTH</a>] | + | | mechanisms | | + | | | | + | STARTTLS | Transport layer security | [<a href="#ref-NNTP-TLS" title='"Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP)"'>NNTP-TLS</a>] | + | | | | + | STREAMING | Streaming feeds | [<a href="#ref-NNTP-STREAM" title='"Network News Transfer Protocol (NNTP) Extension for Streaming Feeds"'>NNTP-STREAM</a>] | + | | | | + | VERSION | Supported NNTP versions | <a href="#section-3.3.2">Section 3.3.2</a> | + +-------------------+--------------------------+--------------------+ + + + + +<span class="grey">Feather Standards Track [Page 19]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-20" id="page-20" href="#page-20" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-3.4" href="#section-3.4">3.4</a>. Mandatory and Optional Commands</h3></span> + + For a number of reasons, not all the commands in this specification + are mandatory. However, it is equally undesirable for every command + to be optional, since this means that a client will have no idea what + facilities are available. Therefore, as a compromise, some of the + commands in this specification are mandatory (they must be supported + by all servers) while the remainder are not. The latter are then + subdivided into bundles, each indicated by a single capability label. + + o If the label is included in the capability list returned by the + server, the server MUST support all commands in that bundle. + + o If the label is not included, the server MAY support none or some + of the commands but SHOULD NOT support all of them. In general, + there will be no way for a client to determine which commands are + supported without trying them. + + The bundles have been chosen to provide useful functionality, and + therefore server authors are discouraged from implementing only part + of a bundle. + + The description of each command will either indicate that it is + mandatory, or will give, using the term "indicating capability", the + capability label indicating whether the bundle including this command + is available. + + Where a server does not implement a command, it MUST always generate + a 500 generic response code (or a 501 generic response code in the + case of a variant of a command depending on a second keyword where + the base command is recognised). Otherwise, the command MUST be + fully implemented as specified; a server MUST NOT only partially + implement any of the commands in this specification. (Client authors + should note that some servers not conforming to this specification + will return a 502 generic response code to some commands that are not + implemented.) + + Note: some commands have cases that require other commands to be used + first. If the former command is implemented but the latter is not, + the former MUST still generate the relevant specific response code. + For example, if ARTICLE (<a href="#section-6.2.1">Section 6.2.1</a>) is implemented but GROUP + (<a href="#section-6.1.1">Section 6.1.1</a>) is not, the correct response to "ARTICLE 1234" + remains 412. + + + + + + + + +<span class="grey">Feather Standards Track [Page 20]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-21" id="page-21" href="#page-21" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-3.4.1" href="#section-3.4.1">3.4.1</a>. Reading and Transit Servers</h4></span> + + NNTP is traditionally used in two different ways. The first use is + "reading", where the client fetches articles from a large store + maintained by the server for immediate or later presentation to a + user and sends articles created by that user back to the server (an + action called "posting") to be stored and distributed to other stores + and users. The second use is for the bulk transfer of articles from + one store to another. Since the hosts making this transfer tend to + be peers in a network that transmit articles among one another, and + not end-user systems, this process is called "peering" or "transit". + (Even so, one host is still the client and the other is the server). + + In practice, these two uses are so different that some server + implementations are optimised for reading or for transit and, as a + result, do not offer the other facility or only offer limited + features. Other implementations are more general and offer both. + This specification allows for this by bundling the relevant commands + accordingly: the IHAVE command is designed for transit, while the + commands indicated by the READER capability are designed for reading + clients. + + Except as an effect of the MODE READER command (<a href="#section-5.3">Section 5.3</a>) on a + mode-switching server, once a server advertises either or both of the + IHAVE or READER capabilities, it MUST continue to advertise them for + the entire session. + + A server MAY provide different modes of behaviour (transit, reader, + or a combination) to different client connections and MAY use + external information, such as the IP address of the client, to + determine which mode to provide to any given connection. + + The official TCP port for the NNTP service is 119. However, if a + host wishes to offer separate servers for transit and reading + clients, port 433 SHOULD be used for the transit server and 119 for + the reading server. + +<span class="h4"><h4><a class="selflink" name="section-3.4.2" href="#section-3.4.2">3.4.2</a>. Mode Switching</h4></span> + + An implementation MAY, but SHOULD NOT, provide both transit and + reader facilities on the same server but require the client to select + which it wishes to use. Such an arrangement is called a + "mode-switching" server. + + + + + + + + +<span class="grey">Feather Standards Track [Page 21]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-22" id="page-22" href="#page-22" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + A mode-switching server has two modes: + + o Transit mode, which applies after the initial connection. + + * It MUST advertise the MODE-READER capability. + + * It MUST NOT advertise the READER capability. + + However, the server MAY cease to advertise the MODE-READER + capability after the client uses any command except CAPABILITIES. + + o Reading mode, after a successful MODE READER command (see <a href="#section-5.3">Section</a> + <a href="#section-5.3">5.3</a>). + + * It MUST NOT advertise the MODE-READER capability. + + * It MUST advertise the READER capability. + + * It MAY NOT advertise the IHAVE capability, even if it was + advertising it in transit mode. + + A client SHOULD only issue a MODE READER command to a server if it is + advertising the MODE-READER capability. If the server does not + support CAPABILITIES (and therefore does not conform to this + specification), the client MAY use the following heuristic: + + o If the client wishes to use any "reader" commands, it SHOULD use + the MODE READER command immediately after the initial connection. + + o Otherwise, it SHOULD NOT use the MODE READER command. + + In each case, it should be prepared for some commands to be + unavailable that would have been available if it had made the other + choice. + +<span class="h3"><h3><a class="selflink" name="section-3.5" href="#section-3.5">3.5</a>. Pipelining</h3></span> + + NNTP is designed to operate over a reliable bi-directional + connection, such as TCP. Therefore, if a command does not depend on + the response to the previous one, it should not matter if it is sent + before that response is received. Doing this is called "pipelining". + However, certain server implementations throw away all text received + from the client following certain commands before sending their + response. If this happens, pipelining will be affected because one + or more commands will have been ignored or misinterpreted, and the + client will be matching the wrong responses to each command. Since + there are significant benefits to pipelining, but also circumstances + where it is reasonable or common for servers to behave in the above + + + +<span class="grey">Feather Standards Track [Page 22]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-23" id="page-23" href="#page-23" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + manner, this document puts certain requirements on both clients and + servers. + + Except where stated otherwise, a client MAY use pipelining. That is, + it may send a command before receiving the response for the previous + command. The server MUST allow pipelining and MUST NOT throw away + any text received after a command. Irrespective of whether + pipelining is used, the server MUST process commands in the order + they are sent. + + If the specific description of a command says it "MUST NOT be + pipelined", that command MUST end any pipeline of commands. That is, + the client MUST NOT send any following command until it receives the + CRLF at the end of the response from the command. The server MAY + ignore any data received after the command and before the CRLF at the + end of the response is sent to the client. + + The initial connection must not be part of a pipeline; that is, the + client MUST NOT send any command until it receives the CRLF at the + end of the greeting. + + If the client uses blocking system calls to send commands, it MUST + ensure that the amount of text sent in pipelining does not cause a + deadlock between transmission and reception. The amount of text + involved will depend on window sizes in the transmission layer; + typically, it is 4k octets for TCP. (Since the server only sends + data in response to commands from the client, the converse problem + does not occur.) + +<span class="h4"><h4><a class="selflink" name="section-3.5.1" href="#section-3.5.1">3.5.1</a>. Examples</h4></span> + + Example of correct use of pipelining: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 211 1234 3000234 3002322 misc.test + [S] 223 3000234 <45223423@example.com> retrieved + [S] 223 3000237 <668929@example.org> retrieved + + Example of incorrect use of pipelining (the MODE READER command may + not be pipelined): + + [<a name="ref-C" id="ref-C">C</a>] MODE READER + [<a href="#ref-C" title='"Demo User"'>C</a>] DATE + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 200 Server ready, posting allowed + [S] 223 3000237 <668929@example.org> retrieved + + + +<span class="grey">Feather Standards Track [Page 23]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-24" id="page-24" href="#page-24" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The DATE command has been thrown away by the server, so there is no + 111 response to match it. + +<span class="h3"><h3><a class="selflink" name="section-3.6" href="#section-3.6">3.6</a>. Articles</h3></span> + + NNTP is intended to transfer articles between clients and servers. + For the purposes of this specification, articles are required to + conform to the rules in this section, and clients and servers MUST + correctly process any article received from the other that does so. + Note that this requirement applies only to the contents of + communications over NNTP; it does not prevent the client or server + from subsequently rejecting an article for reasons of local policy. + Also see <a href="#appendix-A">Appendix A</a> for further restrictions on the format of + articles in some uses of NNTP. + + An article consists of two parts: the headers and the body. They are + separated by a single empty line, or in other words by two + consecutive CRLF pairs (if there is more than one empty line, the + second and subsequent ones are part of the body). In order to meet + the general requirements of NNTP, an article MUST NOT include the + octet NUL, MUST NOT contain the octets LF and CR other than as part + of a CRLF pair, and MUST end with a CRLF pair. This specification + puts no further restrictions on the body; in particular, it MAY be + empty. + + The headers of an article consist of one or more header lines. Each + header line consists of a header name, a colon, a space, the header + content, and a CRLF, in that order. The name consists of one or more + printable US-ASCII characters other than colon and, for the purposes + of this specification, is not case sensitive. There MAY be more than + one header line with the same name. The content MUST NOT contain + CRLF; it MAY be empty. A header may be "folded"; that is, a CRLF + pair may be placed before any TAB or space in the line. There MUST + still be some other octet between any two CRLF pairs in a header + line. (Note that folding means that the header line occupies more + than one line when displayed or transmitted; nevertheless, it is + still referred to as "a" header line.) The presence or absence of + folding does not affect the meaning of the header line; that is, the + CRLF pairs introduced by folding are not considered part of the + header content. Header lines SHOULD NOT be folded before the space + after the colon that follows the header name and SHOULD include at + least one octet other than %x09 or %x20 between CRLF pairs. However, + if an article that fails to satisfy this requirement has been + received from elsewhere, clients and servers MAY transfer it to each + other without re-folding it. + + + + + + +<span class="grey">Feather Standards Track [Page 24]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-25" id="page-25" href="#page-25" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The content of a header SHOULD be in UTF-8. However, if an + implementation receives an article from elsewhere that uses octets in + the range 128 to 255 in some other manner, it MAY pass it to a client + or server without modification. Therefore, implementations MUST be + prepared to receive such headers, and data derived from them (e.g., + in the responses from the OVER command, <a href="#section-8.3">Section 8.3</a>), and MUST NOT + assume that they are always UTF-8. Any external processing of those + headers, including identifying the encoding used, is outside the + scope of this document. + + Each article MUST have a unique message-id; two articles offered by + an NNTP server MUST NOT have the same message-id. For the purposes + of this specification, message-ids are opaque strings that MUST meet + the following requirements: + + o A message-id MUST begin with "<", end with ">", and MUST NOT + contain the latter except at the end. + + o A message-id MUST be between 3 and 250 octets in length. + + o A message-id MUST NOT contain octets other than printable US-ASCII + characters. + + Two message-ids are the same if and only if they consist of the same + sequence of octets. + + This specification does not describe how the message-id of an article + is determined. If the server does not have any way to determine a + message-id from the article itself, it MUST synthesize one (this + specification does not require that the article be changed as a + result). See also <a href="#appendix-A.2">Appendix A.2</a>. + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. The WILDMAT Format</h2></span> + + The WILDMAT format described here is based on the version first + developed by Rich Salz [<a href="#ref-SALZ1992" title='"Manual Page for wildmat(3) from the INN 1.4 distribution, Revision 1.10"'>SALZ1992</a>], which was in turn derived from the + format used in the UNIX "find" command to articulate file names. It + was developed to provide a uniform mechanism for matching patterns in + the same manner that the UNIX shell matches filenames. + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 25]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-26" id="page-26" href="#page-26" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a>. Wildmat Syntax</h3></span> + + A wildmat is described by the following ABNF [<a href="https://tools.ietf.org/html/rfc4234" title='"Augmented BNF for Syntax Specifications: ABNF"'>RFC4234</a>] syntax, which + is an extract of that in <a href="#section-9.8">Section 9.8</a>. + + wildmat = wildmat-pattern *("," ["!"] wildmat-pattern) + wildmat-pattern = 1*wildmat-item + wildmat-item = wildmat-exact / wildmat-wild + wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E / + UTF8-non-ascii ; exclude ! * , ? [ \ ] + wildmat-wild = "*" / "?" + + Note: the characters ",", "\", "[", and "]" are not allowed in + wildmats, while * and ? are always wildcards. This should not be a + problem, since these characters cannot occur in newsgroup names, + which is the only current use of wildmats. Backslash is commonly + used to suppress the special meaning of characters, whereas brackets + are used to introduce sets. However, these usages are not universal, + and interpretation of these characters in the context of UTF-8 + strings is potentially complex and differs from existing practice, so + they were omitted from this specification. A future extension to + this specification may provide semantics for these characters. + +<span class="h3"><h3><a class="selflink" name="section-4.2" href="#section-4.2">4.2</a>. Wildmat Semantics</h3></span> + + A wildmat is tested against a string and either matches or does not + match. To do this, each constituent <wildmat-pattern> is matched + against the string, and the rightmost pattern that matches is + identified. If that <wildmat-pattern> is not preceded with "!", the + whole wildmat matches. If it is preceded by "!", or if no <wildmat- + pattern> matches, the whole wildmat does not match. + + For example, consider the wildmat "a*,!*b,*c*": + + o The string "aaa" matches because the rightmost match is with "a*". + + o The string "abb" does not match because the rightmost match is + with "*b". + + o The string "ccb" matches because the rightmost match is with + "*c*". + + o The string "xxx" does not match because no <wildmat-pattern> + matches. + + A <wildmat-pattern> matches a string if the string can be broken into + components, each of which matches the corresponding <wildmat-item> in + the pattern. The matches must be in the same order, and the whole + + + +<span class="grey">Feather Standards Track [Page 26]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-27" id="page-27" href="#page-27" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + string must be used in the match. The pattern is "anchored"; that + is, the first and last characters in the string must match the first + and last item, respectively (unless that item is an asterisk matching + zero characters). + + A <wildmat-exact> matches the same character (which may be more than + one octet in UTF-8). + + "?" matches exactly one character (which may be more than one octet). + + "*" matches zero or more characters. It can match an empty string, + but it cannot match a subsequence of a UTF-8 sequence that is not + aligned to the character boundaries. + +<span class="h3"><h3><a class="selflink" name="section-4.3" href="#section-4.3">4.3</a>. Extensions</h3></span> + + An NNTP server or extension MAY extend the syntax or semantics of + wildmats provided that all wildmats that meet the requirements of + <a href="#section-4.1">Section 4.1</a> have the meaning ascribed to them by <a href="#section-4.2">Section 4.2</a>. Future + editions of this document may also extend wildmats. + +<span class="h3"><h3><a class="selflink" name="section-4.4" href="#section-4.4">4.4</a>. Examples</h3></span> + + In these examples, $ and @ are used to represent the two octets %xC2 + and %xA3, respectively; $@ is thus the UTF-8 encoding for the pound + sterling symbol, shown as # in the descriptions. + + Wildmat Description of strings that match + abc The one string "abc" + abc,def The two strings "abc" and "def" + $@ The one character string "#" + a* Any string that begins with "a" + a*b Any string that begins with "a" and ends with "b" + a*,*b Any string that begins with "a" or ends with "b" + a*,!*b Any string that begins with "a" and does not end with + "b" + a*,!*b,c* Any string that begins with "a" and does not end with + "b", and any string that begins with "c" no matter + what it ends with + a*,c*,!*b Any string that begins with "a" or "c" and does not + end with "b" + ?a* Any string with "a" as its second character + ??a* Any string with "a" as its third character + *a? Any string with "a" as its penultimate character + *a?? Any string with "a" as its antepenultimate character + + + + + + +<span class="grey">Feather Standards Track [Page 27]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-28" id="page-28" href="#page-28" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. Session Administration Commands</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-5.1" href="#section-5.1">5.1</a>. Initial Connection</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-5.1.1" href="#section-5.1.1">5.1.1</a>. Usage</h4></span> + + This command MUST NOT be pipelined. + + Responses [<a href="#ref-1">1</a>] + 200 Service available, posting allowed + 201 Service available, posting prohibited + 400 Service temporarily unavailable [<a href="#ref-2">2</a>] + 502 Service permanently unavailable [<a href="#ref-2">2</a>] + + [<a name="ref-1" id="ref-1">1</a>] These are the only valid response codes for the initial greeting; + the server MUST not return any other generic response code. + + [<a name="ref-2" id="ref-2">2</a>] Following a 400 or 502 response, the server MUST immediately + close the connection. + +<span class="h4"><h4><a class="selflink" name="section-5.1.2" href="#section-5.1.2">5.1.2</a>. Description</h4></span> + + There is no command presented by the client upon initial connection + to the server. The server MUST present an appropriate response code + as a greeting to the client. This response informs the client + whether service is available and whether the client is permitted to + post. + + If the server will accept further commands from the client including + POST, the server MUST present a 200 greeting code. If the server + will accept further commands from the client, but the client is not + authorized to post articles using the POST command, the server MUST + present a 201 greeting code. + + Otherwise, the server MUST present a 400 or 502 greeting code and + then immediately close the connection. 400 SHOULD be used if the + issue is only temporary (for example, because of load) and the client + can expect to be able to connect successfully at some point in the + future without making any changes. 502 MUST be used if the client is + not permitted under any circumstances to interact with the server, + and MAY be used if the server has insufficient information to + determine whether the issue is temporary or permanent. + + Note: the distinction between the 200 and 201 response codes has + turned out in practice to be insufficient; for example, some servers + do not allow posting until the client has authenticated, while other + clients assume that a 201 response means that posting will never be + possible even after authentication. Therefore, clients SHOULD use + + + +<span class="grey">Feather Standards Track [Page 28]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-29" id="page-29" href="#page-29" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + the CAPABILITIES command (<a href="#section-5.2">Section 5.2</a>) rather than rely on this + response. + +<span class="h4"><h4><a class="selflink" name="section-5.1.3" href="#section-5.1.3">5.1.3</a>. Examples</h4></span> + + Example of a normal connection from an authorized client that then + terminates the session (see <a href="#section-5.4">Section 5.4</a>): + + [Initial connection set-up completed.] + [S] 200 NNTP Service Ready, posting permitted + [<a href="#ref-C" title='"Demo User"'>C</a>] QUIT + [S] 205 NNTP Service exits normally + [Server closes connection.] + + Example of a normal connection from an authorized client that is not + permitted to post, which also immediately terminates the session: + + [Initial connection set-up completed.] + [S] 201 NNTP Service Ready, posting prohibited + [<a href="#ref-C" title='"Demo User"'>C</a>] QUIT + [S] 205 NNTP Service exits normally + [Server closes connection.] + + Example of a normal connection from an unauthorized client: + + [Initial connection set-up completed.] + [S] 502 NNTP Service permanently unavailable + [Server closes connection.] + + Example of a connection from a client if the server is unable to + provide service: + + [Initial connection set-up completed.] + [S] 400 NNTP Service temporarily unavailable + [Server closes connection.] + +<span class="h3"><h3><a class="selflink" name="section-5.2" href="#section-5.2">5.2</a>. CAPABILITIES</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-5.2.1" href="#section-5.2.1">5.2.1</a>. Usage</h4></span> + + This command is mandatory. + + Syntax + CAPABILITIES [keyword] + + Responses + 101 Capability list follows (multi-line) + + + + +<span class="grey">Feather Standards Track [Page 29]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-30" id="page-30" href="#page-30" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Parameters + keyword additional feature, see description + +<span class="h4"><h4><a class="selflink" name="section-5.2.2" href="#section-5.2.2">5.2.2</a>. Description</h4></span> + + The CAPABILITIES command allows a client to determine the + capabilities of the server at any given time. + + This command MAY be issued at any time; the server MUST NOT require + it to be issued in order to make use of any capability. The response + generated by this command MAY change during a session because of + other state information (which, in turn, may be changed by the + effects of other commands or by external events). An NNTP client is + only able to get the current and correct information concerning + available capabilities at any point during a session by issuing a + CAPABILITIES command at that point of that session and processing the + response. + + The capability list is returned as a multi-line data block following + the 101 response code. Each capability is described by a separate + capability line. The server MUST NOT list the same capability twice + in the response, even with different arguments. Except that the + VERSION capability MUST be the first line, the order in which the + capability lines appears is not significant; the server need not even + consistently return the same order. + + While some capabilities are likely to be always available or never + available, others (notably extensions) will appear and disappear + depending on server state changes within the session or on external + events between sessions. An NNTP client MAY cache the results of + this command, but MUST NOT rely on the correctness of any cached + results, whether from earlier in this session or from a previous + session, MUST cope gracefully with the cached status being out of + date, and SHOULD (if caching results) provide a way to force the + cached information to be refreshed. Furthermore, a client MUST NOT + use cached results in relation to security, privacy, and + authentication extensions. See <a href="#section-12.6">Section 12.6</a> for further discussion + of this topic. + + The keyword argument is not used by this specification. It is + provided so that extensions or revisions to this specification can + include extra features for this command without requiring the + CAPABILITIES command to be used twice (once to determine if the extra + features are available, and a second time to make use of them). If + the server does not recognise the argument (and it is a keyword), it + MUST respond with the 101 response code as if the argument had been + omitted. If an argument is provided that the server does recognise, + it MAY use the 101 response code or MAY use some other response code + + + +<span class="grey">Feather Standards Track [Page 30]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-31" id="page-31" href="#page-31" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + (which will be defined in the specification of that feature). If the + argument is not a keyword, the 501 generic response code MUST be + returned. The server MUST NOT generate any other response code to + the CAPABILITIES command. + +<span class="h4"><h4><a class="selflink" name="section-5.2.3" href="#section-5.2.3">5.2.3</a>. Examples</h4></span> + + Example of a minimal response (a read-only server): + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] LIST ACTIVE NEWSGROUPS + [S] . + + Example of a response from a server that has a range of facilities + and that also describes itself: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] IHAVE + [S] POST + [S] NEWNEWS + [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES OVERVIEW.FMT + [S] IMPLEMENTATION INN 4.2 2004-12-25 + [S] OVER MSGID + [S] STREAMING + [S] XSECRET + [S] . + + Example of a server that supports more than one version of NNTP: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 3 + [S] READER + [S] LIST ACTIVE NEWSGROUPS + [S] . + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 31]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-32" id="page-32" href="#page-32" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of a client attempting to use a feature of the CAPABILITIES + command that the server does not support: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES AUTOUPDATE + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] IHAVE + [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT HEADERS + [S] OVER MSGID + [S] HDR + [S] NEWNEWS + [S] . + +<span class="h3"><h3><a class="selflink" name="section-5.3" href="#section-5.3">5.3</a>. MODE READER</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-5.3.1" href="#section-5.3.1">5.3.1</a>. Usage</h4></span> + + Indicating capability: MODE-READER + + This command MUST NOT be pipelined. + + Syntax + MODE READER + + Responses + 200 Posting allowed + 201 Posting prohibited + 502 Reading service permanently unavailable [<a href="#ref-1">1</a>] + + [<a name="ref-1" id="ref-1">1</a>] Following a 502 response the server MUST immediately close the + connection. + +<span class="h4"><h4><a class="selflink" name="section-5.3.2" href="#section-5.3.2">5.3.2</a>. Description</h4></span> + + The MODE READER command instructs a mode-switching server to switch + modes, as described in <a href="#section-3.4.2">Section 3.4.2</a>. + + If the server is mode-switching, it switches from its transit mode to + its reader mode, indicating this by changing the capability list + accordingly. It MUST then return a 200 or 201 response with the same + meaning as for the initial greeting (as described in <a href="#section-5.1.1">Section 5.1.1</a>). + Note that the response need not be the same as that presented during + the initial greeting. The client MUST NOT issue MODE READER more + than once in a session or after any security or privacy commands are + issued. When the MODE READER command is issued, the server MAY reset + its state to that immediately after the initial connection before + switching mode. + + + +<span class="grey">Feather Standards Track [Page 32]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-33" id="page-33" href="#page-33" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + If the server is not mode-switching, then the following apply: + + o If it advertises the READER capability, it MUST return a 200 or + 201 response with the same meaning as for the initial greeting; in + this case, the command MUST NOT affect the server state in any + way. + + o If it does not advertise the READER capability, it MUST return a + 502 response and then immediately close the connection. + +<span class="h4"><h4><a class="selflink" name="section-5.3.3" href="#section-5.3.3">5.3.3</a>. Examples</h4></span> + + Example of use of the MODE READER command on a transit-only server + (which therefore does not providing reading facilities): + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] IHAVE + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] MODE READER + [S] 502 Transit service only + [Server closes connection.] + + Example of use of the MODE READER command on a server that provides + reading facilities: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] LIST ACTIVE NEWSGROUPS + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] MODE READER + [S] 200 Reader mode, posting permitted + [<a href="#ref-C" title='"Demo User"'>C</a>] IHAVE <i.am.an.article.you.have@example.com> + [S] 500 Permission denied + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + + Note that in both of these situations, the client SHOULD NOT use MODE + READER. + + + + + + + + + +<span class="grey">Feather Standards Track [Page 33]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-34" id="page-34" href="#page-34" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of use of the MODE READER command on a mode-switching server: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] IHAVE + [S] MODE-READER + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] MODE READER + [S] 200 Reader mode, posting permitted + [<a href="#ref-C" title='"Demo User"'>C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] NEWNEWS + [S] LIST ACTIVE NEWSGROUPS + [S] STARTTLS + [S] . + + In this case, the server offers (but does not require) TLS privacy in + its reading mode but not in its transit mode. + + Example of use of the MODE READER command where the client is not + permitted to post: + + [<a name="ref-C" id="ref-C">C</a>] MODE READER + [S] 201 NNTP Service Ready, posting prohibited + +<span class="h3"><h3><a class="selflink" name="section-5.4" href="#section-5.4">5.4</a>. QUIT</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-5.4.1" href="#section-5.4.1">5.4.1</a>. Usage</h4></span> + + This command is mandatory. + + Syntax + QUIT + + Responses + 205 Connection closing + +<span class="h4"><h4><a class="selflink" name="section-5.4.2" href="#section-5.4.2">5.4.2</a>. Description</h4></span> + + The client uses the QUIT command to terminate the session. The + server MUST acknowledge the QUIT command and then close the + connection to the client. This is the preferred method for a client + to indicate that it has finished all of its transactions with the + NNTP server. + + + + +<span class="grey">Feather Standards Track [Page 34]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-35" id="page-35" href="#page-35" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + If a client simply disconnects (or if the connection times out or + some other fault occurs), the server MUST gracefully cease its + attempts to service the client, disconnecting from its end if + necessary. + + The server MUST NOT generate any response code to the QUIT command + other than 205 or, if any arguments are provided, 501. + +<span class="h4"><h4><a class="selflink" name="section-5.4.3" href="#section-5.4.3">5.4.3</a>. Examples</h4></span> + + [<a name="ref-C" id="ref-C">C</a>] QUIT + [S] 205 closing connection + [Server closes connection.] + +<span class="h2"><h2><a class="selflink" name="section-6" href="#section-6">6</a>. Article Posting and Retrieval</h2></span> + + News-reading clients have available a variety of mechanisms to + retrieve articles via NNTP. The news articles are stored and indexed + using three types of keys. The first type of key is the message-id + of an article and is globally unique. The second type of key is + composed of a newsgroup name and an article number within that + newsgroup. On a particular server, there MUST only be one article + with a given number within any newsgroup, and an article MUST NOT + have two different numbers in the same newsgroup. An article can be + cross-posted to multiple newsgroups, so there may be multiple keys + that point to the same article on the same server; these MAY have + different numbers in each newsgroup. However, this type of key is + not required to be globally unique, so the same key MAY refer to + different articles on different servers. (Note that the terms + "group" and "newsgroup" are equivalent.) + + The final type of key is the arrival timestamp, giving the time that + the article arrived at the server. The server MUST ensure that + article numbers are issued in order of arrival timestamp; that is, + articles arriving later MUST have higher numbers than those that + arrive earlier. The server SHOULD allocate the next sequential + unused number to each new article. + + Article numbers MUST lie between 1 and 2,147,483,647, inclusive. The + client and server MAY use leading zeroes in specifying article + numbers but MUST NOT use more than 16 digits. In some situations, + the value zero replaces an article number to show some special + situation. + + Note that it is likely that the article number limit of 2,147,483,647 + will be increased by a future revision or extension to this + specification. While servers MUST NOT send article numbers greater + than this current limit, client and server developers are advised to + + + +<span class="grey">Feather Standards Track [Page 35]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-36" id="page-36" href="#page-36" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + use internal structures and datatypes capable of handling larger + values in anticipation of such a change. + +<span class="h3"><h3><a class="selflink" name="section-6.1" href="#section-6.1">6.1</a>. Group and Article Selection</h3></span> + + The following commands are used to set the "currently selected + newsgroup" and the "current article number", which are used by + various commands. At the start of an NNTP session, both of these + values are set to the special value "invalid". + +<span class="h4"><h4><a class="selflink" name="section-6.1.1" href="#section-6.1.1">6.1.1</a>. GROUP</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.1.1.1" href="#section-6.1.1.1">6.1.1.1</a>. Usage</h5></span> + + Indicating capability: READER + + Syntax + GROUP group + + Responses + 211 number low high group Group successfully selected + 411 No such newsgroup + + Parameters + group Name of newsgroup + number Estimated number of articles in the group + low Reported low water mark + high Reported high water mark + +<span class="h5"><h5><a class="selflink" name="section-6.1.1.2" href="#section-6.1.1.2">6.1.1.2</a>. Description</h5></span> + + The GROUP command selects a newsgroup as the currently selected + newsgroup and returns summary information about it. + + The required argument is the name of the newsgroup to be selected + (e.g., "news.software.nntp"). A list of valid newsgroups may be + obtained by using the LIST ACTIVE command (see <a href="#section-7.6.3">Section 7.6.3</a>). + + The successful selection response will return the article numbers of + the first and last articles in the group at the moment of selection + (these numbers are referred to as the "reported low water mark" and + the "reported high water mark") and an estimate of the number of + articles in the group currently available. + + If the group is not empty, the estimate MUST be at least the actual + number of articles available and MUST be no greater than one more + than the difference between the reported low and high water marks. + (Some implementations will actually count the number of articles + + + +<span class="grey">Feather Standards Track [Page 36]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-37" id="page-37" href="#page-37" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + currently stored. Others will just subtract the low water mark from + the high water mark and add one to get an estimate.) + + If the group is empty, one of the following three situations will + occur. Clients MUST accept all three cases; servers MUST NOT + represent an empty group in any other way. + + o The high water mark will be one less than the low water mark, and + the estimated article count will be zero. Servers SHOULD use this + method to show an empty group. This is the only time that the + high water mark can be less than the low water mark. + + o All three numbers will be zero. + + o The high water mark is greater than or equal to the low water + mark. The estimated article count might be zero or non-zero; if + it is non-zero, the same requirements apply as for a non-empty + group. + + The set of articles in a group may change after the GROUP command is + carried out: + + o Articles may be removed from the group. + + o Articles may be reinstated in the group with the same article + number, but those articles MUST have numbers no less than the + reported low water mark (note that this is a reinstatement of the + previous article, not a new article reusing the number). + + o New articles may be added with article numbers greater than the + reported high water mark. (If an article that was the one with + the highest number has been removed and the high water mark has + been adjusted accordingly, the next new article will not have the + number one greater than the reported high water mark.) + + Except when the group is empty and all three numbers are zero, + whenever a subsequent GROUP command for the same newsgroup is issued, + either by the same client or a different client, the reported low + water mark in the response MUST be no less than that in any previous + response for that newsgroup in this session, and it SHOULD be no less + than that in any previous response for that newsgroup ever sent to + any client. Any failure to meet the latter condition SHOULD be + transient only. The client may make use of the low water mark to + remove all remembered information about articles with lower numbers, + as these will never recur. This includes the situation when the high + water mark is one less than the low water mark. No similar + assumption can be made about the high water mark, as this can + + + + +<span class="grey">Feather Standards Track [Page 37]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-38" id="page-38" href="#page-38" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + decrease if an article is removed and then increase again if it is + reinstated or if new articles arrive. + + When a valid group is selected by means of this command, the + currently selected newsgroup MUST be set to that group, and the + current article number MUST be set to the first article in the group + (this applies even if the group is already the currently selected + newsgroup). If an empty newsgroup is selected, the current article + number is made invalid. If an invalid group is specified, the + currently selected newsgroup and current article number MUST NOT be + changed. + + The GROUP or LISTGROUP command (see <a href="#section-6.1.2">Section 6.1.2</a>) MUST be used by a + client, and a successful response received, before any other command + is used that depends on the value of the currently selected newsgroup + or current article number. + + If the group specified is not available on the server, a 411 response + MUST be returned. + +<span class="h5"><h5><a class="selflink" name="section-6.1.1.3" href="#section-6.1.1.3">6.1.1.3</a>. Examples</h5></span> + + Example for a group known to the server: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + + Example for a group unknown to the server: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.is.sob.bradner.or.barber + [S] 411 example.is.sob.bradner.or.barber is unknown + + Example of an empty group using the preferred response: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.currently.empty.newsgroup + [S] 211 0 4000 3999 example.currently.empty.newsgroup + + Example of an empty group using an alternative response: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.currently.empty.newsgroup + [S] 211 0 0 0 example.currently.empty.newsgroup + + Example of an empty group using a different alternative response: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.currently.empty.newsgroup + [S] 211 0 4000 4321 example.currently.empty.newsgroup + + + + + +<span class="grey">Feather Standards Track [Page 38]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-39" id="page-39" href="#page-39" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example reselecting the currently selected newsgroup: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 234 567 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT 444 + [S] 223 444 <123456@example.net> retrieved + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP misc.test + [S] 211 1234 234 567 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT + [S] 223 234 <different@example.net> retrieved + +<span class="h4"><h4><a class="selflink" name="section-6.1.2" href="#section-6.1.2">6.1.2</a>. LISTGROUP</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.1.2.1" href="#section-6.1.2.1">6.1.2.1</a>. Usage</h5></span> + + Indicating capability: READER + + Syntax + LISTGROUP [group [range]] + + Responses + 211 number low high group Article numbers follow (multi-line) + 411 No such newsgroup + 412 No newsgroup selected [<a href="#ref-1">1</a>] + + Parameters + group Name of newsgroup + range Range of articles to report + number Estimated number of articles in the group + low Reported low water mark + high Reported high water mark + + [<a name="ref-1" id="ref-1">1</a>] The 412 response can only occur if no group has been specified. + +<span class="h5"><h5><a class="selflink" name="section-6.1.2.2" href="#section-6.1.2.2">6.1.2.2</a>. Description</h5></span> + + The LISTGROUP command selects a newsgroup in the same manner as the + GROUP command (see <a href="#section-6.1.1">Section 6.1.1</a>) but also provides a list of article + numbers in the newsgroup. If no group is specified, the currently + selected newsgroup is used. + + On success, a list of article numbers is returned as a multi-line + data block following the 211 response code (the arguments on the + initial response line are the same as for the GROUP command). The + list contains one number per line and is in numerical order. It + lists precisely those articles that exist in the group at the moment + of selection (therefore, an empty group produces an empty list). If + the optional range argument is specified, only articles within the + + + +<span class="grey">Feather Standards Track [Page 39]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-40" id="page-40" href="#page-40" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + range are included in the list (therefore, the list MAY be empty even + if the group is not). + + The range argument may be any of the following: + + o An article number. + + o An article number followed by a dash to indicate all following. + + o An article number followed by a dash followed by another article + number. + + In the last case, if the second number is less than the first number, + then the range contains no articles. Omitting the range is + equivalent to the range 1- being specified. + + If the group specified is not available on the server, a 411 response + MUST be returned. If no group is specified and the currently + selected newsgroup is invalid, a 412 response MUST be returned. + + Except that the group argument is optional, that a range argument can + be specified, and that a multi-line data block follows the 211 + response code, the LISTGROUP command is identical to the GROUP + command. In particular, when successful, the command sets the + current article number to the first article in the group, if any, + even if this is not within the range specified by the second + argument. + + Note that the range argument is a new feature in this specification + and servers that do not support CAPABILITIES (and therefore do not + conform to this specification) are unlikely to support it. + +<span class="h5"><h5><a class="selflink" name="section-6.1.2.3" href="#section-6.1.2.3">6.1.2.3</a>. Examples</h5></span> + + Example of LISTGROUP being used to select a group: + + [<a name="ref-C" id="ref-C">C</a>] LISTGROUP misc.test + [S] 211 2000 3000234 3002322 misc.test list follows + [S] 3000234 + [S] 3000237 + [S] 3000238 + [S] 3000239 + [S] 3002322 + [S] . + + + + + + + +<span class="grey">Feather Standards Track [Page 40]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-41" id="page-41" href="#page-41" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of LISTGROUP on an empty group: + + [<a name="ref-C" id="ref-C">C</a>] LISTGROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup list follows + [S] . + + Example of LISTGROUP on a valid, currently selected newsgroup: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 2000 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] LISTGROUP + [S] 211 2000 3000234 3002322 misc.test list follows + [S] 3000234 + [S] 3000237 + [S] 3000238 + [S] 3000239 + [S] 3002322 + [S] . + + Example of LISTGROUP with a range: + + [<a name="ref-C" id="ref-C">C</a>] LISTGROUP misc.test 3000238-3000248 + [S] 211 2000 3000234 3002322 misc.test list follows + [S] 3000238 + [S] 3000239 + [S] . + + Example of LISTGROUP with an empty range: + + [<a name="ref-C" id="ref-C">C</a>] LISTGROUP misc.test 12345678- + [S] 211 2000 3000234 3002322 misc.test list follows + [S] . + + Example of LISTGROUP with an invalid range: + + [<a name="ref-C" id="ref-C">C</a>] LISTGROUP misc.test 9999-111 + [S] 211 2000 3000234 3002322 misc.test list follows + [S] . + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 41]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-42" id="page-42" href="#page-42" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-6.1.3" href="#section-6.1.3">6.1.3</a>. LAST</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.1.3.1" href="#section-6.1.3.1">6.1.3.1</a>. Usage</h5></span> + + Indicating capability: READER + + Syntax + LAST + + Responses + 223 n message-id Article found + 412 No newsgroup selected + 420 Current article number is invalid + 422 No previous article in this group + + Parameters + n Article number + message-id Article message-id + +<span class="h5"><h5><a class="selflink" name="section-6.1.3.2" href="#section-6.1.3.2">6.1.3.2</a>. Description</h5></span> + + If the currently selected newsgroup is valid, the current article + number MUST be set to the previous article in that newsgroup (that + is, the highest existing article number less than the current article + number). If successful, a response indicating the new current + article number and the message-id of that article MUST be returned. + No article text is sent in response to this command. + + There MAY be no previous article in the group, although the current + article number is not the reported low water mark. There MUST NOT be + a previous article when the current article number is the reported + low water mark. + + Because articles can be removed and added, the results of multiple + LAST and NEXT commands MAY not be consistent over the life of a + particular NNTP session. + + If the current article number is already the first article of the + newsgroup, a 422 response MUST be returned. If the current article + number is invalid, a 420 response MUST be returned. If the currently + selected newsgroup is invalid, a 412 response MUST be returned. In + all three cases, the currently selected newsgroup and current article + number MUST NOT be altered. + + + + + + + + +<span class="grey">Feather Standards Track [Page 42]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-43" id="page-43" href="#page-43" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h5"><h5><a class="selflink" name="section-6.1.3.3" href="#section-6.1.3.3">6.1.3.3</a>. Examples</h5></span> + + Example of a successful article retrieval using LAST: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 223 3000237 <668929@example.org> retrieved + [<a href="#ref-C" title='"Demo User"'>C</a>] LAST + [S] 223 3000234 <45223423@example.com> retrieved + + Example of an attempt to retrieve an article without having selected + a group (via the GROUP command) first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] LAST + [S] 412 no newsgroup selected + + Example of an attempt to retrieve an article using the LAST command + when the current article number is that of the first article in the + group: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] LAST + [S] 422 No previous article to retrieve + + Example of an attempt to retrieve an article using the LAST command + when the currently selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] LAST + [S] 420 No current article selected + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 43]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-44" id="page-44" href="#page-44" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-6.1.4" href="#section-6.1.4">6.1.4</a>. NEXT</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.1.4.1" href="#section-6.1.4.1">6.1.4.1</a>. Usage</h5></span> + + Indicating capability: READER + + Syntax + NEXT + + Responses + 223 n message-id Article found + 412 No newsgroup selected + 420 Current article number is invalid + 421 No next article in this group + + Parameters + n Article number + message-id Article message-id + +<span class="h5"><h5><a class="selflink" name="section-6.1.4.2" href="#section-6.1.4.2">6.1.4.2</a>. Description</h5></span> + + If the currently selected newsgroup is valid, the current article + number MUST be set to the next article in that newsgroup (that is, + the lowest existing article number greater than the current article + number). If successful, a response indicating the new current + article number and the message-id of that article MUST be returned. + No article text is sent in response to this command. + + If the current article number is already the last article of the + newsgroup, a 421 response MUST be returned. In all other aspects + (apart, of course, from the lack of 422 response), this command is + identical to the LAST command (<a href="#section-6.1.3">Section 6.1.3</a>). + +<span class="h5"><h5><a class="selflink" name="section-6.1.4.3" href="#section-6.1.4.3">6.1.4.3</a>. Examples</h5></span> + + Example of a successful article retrieval using NEXT: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 223 3000237 <668929@example.org> retrieved + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 44]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-45" id="page-45" href="#page-45" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an attempt to retrieve an article without having selected + a group (via the GROUP command) first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 412 no newsgroup selected + + Example of an attempt to retrieve an article using the NEXT command + when the current article number is that of the last article in the + group: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT 3002322 + [S] 223 3002322 <411@example.net> retrieved + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 421 No next article to retrieve + + Example of an attempt to retrieve an article using the NEXT command + when the currently selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] NEXT + [S] 420 No current article selected + +<span class="h3"><h3><a class="selflink" name="section-6.2" href="#section-6.2">6.2</a>. Retrieval of Articles and Article Sections</h3></span> + + The ARTICLE, BODY, HEAD, and STAT commands are very similar. They + differ only in the parts of the article that are presented to the + client and in the successful response code. The ARTICLE command is + described here in full, while the other three commands are described + in terms of the differences. As specified in <a href="#section-3.6">Section 3.6</a>, an article + consists of two parts: the article headers and the article body. + + When responding to one of these commands, the server MUST present the + entire article or appropriate part and MUST NOT attempt to alter or + translate it in any way. + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 45]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-46" id="page-46" href="#page-46" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-6.2.1" href="#section-6.2.1">6.2.1</a>. ARTICLE</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.2.1.1" href="#section-6.2.1.1">6.2.1.1</a>. Usage</h5></span> + + Indicating capability: READER + + Syntax + ARTICLE message-id + ARTICLE number + ARTICLE + + Responses + + First form (message-id specified) + 220 0|n message-id Article follows (multi-line) + 430 No article with that message-id + + Second form (article number specified) + 220 n message-id Article follows (multi-line) + 412 No newsgroup selected + 423 No article with that number + + Third form (current article number used) + 220 n message-id Article follows (multi-line) + 412 No newsgroup selected + 420 Current article number is invalid + + Parameters + number Requested article number + n Returned article number + message-id Article message-id + +<span class="h5"><h5><a class="selflink" name="section-6.2.1.2" href="#section-6.2.1.2">6.2.1.2</a>. Description</h5></span> + + The ARTICLE command selects an article according to the arguments and + presents the entire article (that is, the headers, an empty line, and + the body, in that order) to the client. The command has three forms. + + In the first form, a message-id is specified, and the server presents + the article with that message-id. In this case, the server MUST NOT + alter the currently selected newsgroup or current article number. + This is both to facilitate the presentation of articles that may be + referenced within another article being read, and because of the + semantic difficulties of determining the proper sequence and + membership of an article that may have been cross-posted to more than + one newsgroup. + + + + + +<span class="grey">Feather Standards Track [Page 46]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-47" id="page-47" href="#page-47" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + In the response, the article number MUST be replaced with zero, + unless there is a currently selected newsgroup and the article is + present in that group, in which case the server MAY use the article's + number in that group. (The server is not required to determine + whether the article is in the currently selected newsgroup or, if so, + what article number it has; the client MUST always be prepared for + zero to be specified.) The server MUST NOT provide an article number + unless use of that number in a second ARTICLE command immediately + following this one would return the same article. Even if the server + chooses to return article numbers in these circumstances, it need not + do so consistently; it MAY return zero to any such command (also see + the STAT examples, <a href="#section-6.2.4.3">Section 6.2.4.3</a>). + + In the second form, an article number is specified. If there is an + article with that number in the currently selected newsgroup, the + server MUST set the current article number to that number. + + In the third form, the article indicated by the current article + number in the currently selected newsgroup is used. + + Note that a previously valid article number MAY become invalid if the + article has been removed. A previously invalid article number MAY + become valid if the article has been reinstated, but this article + number MUST be no less than the reported low water mark for that + group. + + The server MUST NOT change the currently selected newsgroup as a + result of this command. The server MUST NOT change the current + article number except when an article number argument was provided + and the article exists; in particular, it MUST NOT change it + following an unsuccessful response. + + Since the message-id is unique for each article, it may be used by a + client to skip duplicate displays of articles that have been posted + more than once, or to more than one newsgroup. + + The article is returned as a multi-line data block following the 220 + response code. + + If the argument is a message-id and no such article exists, a 430 + response MUST be returned. If the argument is a number or is omitted + and the currently selected newsgroup is invalid, a 412 response MUST + be returned. If the argument is a number and that article does not + exist in the currently selected newsgroup, a 423 response MUST be + returned. If the argument is omitted and the current article number + is invalid, a 420 response MUST be returned. + + + + + +<span class="grey">Feather Standards Track [Page 47]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-48" id="page-48" href="#page-48" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h5"><h5><a class="selflink" name="section-6.2.1.3" href="#section-6.2.1.3">6.2.1.3</a>. Examples</h5></span> + + Example of a successful retrieval of an article (explicitly not using + an article number): + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] ARTICLE + [S] 220 3000234 <45223423@example.com> + [S] Path: pathost!demo!whitehouse!not-for-mail + [S] From: "Demo User" <nobody@example.net> + [S] Newsgroups: misc.test + [S] Subject: I am just a test article + [S] Date: 6 Oct 1998 04:38:40 -0500 + [S] Organization: An Example Net, Uncertain, Texas + [S] Message-ID: <45223423@example.com> + [S] + [S] This is just a test article. + [S] . + + Example of a successful retrieval of an article by message-id: + + [<a name="ref-C" id="ref-C">C</a>] ARTICLE <45223423@example.com> + [S] 220 0 <45223423@example.com> + [S] Path: pathost!demo!whitehouse!not-for-mail + [S] From: "Demo User" <nobody@example.net> + [S] Newsgroups: misc.test + [S] Subject: I am just a test article + [S] Date: 6 Oct 1998 04:38:40 -0500 + [S] Organization: An Example Net, Uncertain, Texas + [S] Message-ID: <45223423@example.com> + [S] + [S] This is just a test article. + [S] . + + Example of an unsuccessful retrieval of an article by message-id: + + [<a name="ref-C" id="ref-C">C</a>] ARTICLE <i.am.not.there@example.com> + [S] 430 No Such Article Found + + Example of an unsuccessful retrieval of an article by number: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 news.groups + [<a href="#ref-C" title='"Demo User"'>C</a>] ARTICLE 300256 + [S] 423 No article with that number + + + + + +<span class="grey">Feather Standards Track [Page 48]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-49" id="page-49" href="#page-49" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an unsuccessful retrieval of an article by number because + no newsgroup was selected first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] ARTICLE 300256 + [S] 412 No newsgroup selected + + Example of an attempt to retrieve an article when the currently + selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] ARTICLE + [S] 420 No current article selected + +<span class="h4"><h4><a class="selflink" name="section-6.2.2" href="#section-6.2.2">6.2.2</a>. HEAD</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.2.2.1" href="#section-6.2.2.1">6.2.2.1</a>. Usage</h5></span> + + This command is mandatory. + + Syntax + HEAD message-id + HEAD number + HEAD + + Responses + + First form (message-id specified) + 221 0|n message-id Headers follow (multi-line) + 430 No article with that message-id + + Second form (article number specified) + 221 n message-id Headers follow (multi-line) + 412 No newsgroup selected + 423 No article with that number + + Third form (current article number used) + 221 n message-id Headers follow (multi-line) + 412 No newsgroup selected + 420 Current article number is invalid + + Parameters + number Requested article number + n Returned article number + message-id Article message-id + + + + + +<span class="grey">Feather Standards Track [Page 49]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-50" id="page-50" href="#page-50" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h5"><h5><a class="selflink" name="section-6.2.2.2" href="#section-6.2.2.2">6.2.2.2</a>. Description</h5></span> + + The HEAD command behaves identically to the ARTICLE command except + that, if the article exists, the response code is 221 instead of 220 + and only the headers are presented (the empty line separating the + headers and body MUST NOT be included). + +<span class="h5"><h5><a class="selflink" name="section-6.2.2.3" href="#section-6.2.2.3">6.2.2.3</a>. Examples</h5></span> + + Example of a successful retrieval of the headers of an article + (explicitly not using an article number): + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HEAD + [S] 221 3000234 <45223423@example.com> + [S] Path: pathost!demo!whitehouse!not-for-mail + [S] From: "Demo User" <nobody@example.net> + [S] Newsgroups: misc.test + [S] Subject: I am just a test article + [S] Date: 6 Oct 1998 04:38:40 -0500 + [S] Organization: An Example Net, Uncertain, Texas + [S] Message-ID: <45223423@example.com> + [S] . + + Example of a successful retrieval of the headers of an article by + message-id: + + [<a name="ref-C" id="ref-C">C</a>] HEAD <45223423@example.com> + [S] 221 0 <45223423@example.com> + [S] Path: pathost!demo!whitehouse!not-for-mail + [S] From: "Demo User" <nobody@example.net> + [S] Newsgroups: misc.test + [S] Subject: I am just a test article + [S] Date: 6 Oct 1998 04:38:40 -0500 + [S] Organization: An Example Net, Uncertain, Texas + [S] Message-ID: <45223423@example.com> + [S] . + + Example of an unsuccessful retrieval of the headers of an article by + message-id: + + [<a name="ref-C" id="ref-C">C</a>] HEAD <i.am.not.there@example.com> + [S] 430 No Such Article Found + + + + + + + +<span class="grey">Feather Standards Track [Page 50]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-51" id="page-51" href="#page-51" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an unsuccessful retrieval of the headers of an article by + number: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HEAD 300256 + [S] 423 No article with that number + + Example of an unsuccessful retrieval of the headers of an article by + number because no newsgroup was selected first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] HEAD 300256 + [S] 412 No newsgroup selected + + Example of an attempt to retrieve the headers of an article when the + currently selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] HEAD + [S] 420 No current article selected + +<span class="h4"><h4><a class="selflink" name="section-6.2.3" href="#section-6.2.3">6.2.3</a>. BODY</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.2.3.1" href="#section-6.2.3.1">6.2.3.1</a>. Usage</h5></span> + + Indicating capability: READER + + Syntax + BODY message-id + BODY number + BODY + + Responses + + First form (message-id specified) + 222 0|n message-id Body follows (multi-line) + 430 No article with that message-id + + Second form (article number specified) + 222 n message-id Body follows (multi-line) + 412 No newsgroup selected + 423 No article with that number + + + + + + + +<span class="grey">Feather Standards Track [Page 51]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-52" id="page-52" href="#page-52" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Third form (current article number used) + 222 n message-id Body follows (multi-line) + 412 No newsgroup selected + 420 Current article number is invalid + + Parameters + number Requested article number + n Returned article number + message-id Article message-id + +<span class="h5"><h5><a class="selflink" name="section-6.2.3.2" href="#section-6.2.3.2">6.2.3.2</a>. Description</h5></span> + + The BODY command behaves identically to the ARTICLE command except + that, if the article exists, the response code is 222 instead of 220 + and only the body is presented (the empty line separating the headers + and body MUST NOT be included). + +<span class="h5"><h5><a class="selflink" name="section-6.2.3.3" href="#section-6.2.3.3">6.2.3.3</a>. Examples</h5></span> + + Example of a successful retrieval of the body of an article + (explicitly not using an article number): + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] BODY + [S] 222 3000234 <45223423@example.com> + [S] This is just a test article. + [S] . + + Example of a successful retrieval of the body of an article by + message-id: + + [<a name="ref-C" id="ref-C">C</a>] BODY <45223423@example.com> + [S] 222 0 <45223423@example.com> + [S] This is just a test article. + [S] . + + Example of an unsuccessful retrieval of the body of an article by + message-id: + + [<a name="ref-C" id="ref-C">C</a>] BODY <i.am.not.there@example.com> + [S] 430 No Such Article Found + + + + + + + + + +<span class="grey">Feather Standards Track [Page 52]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-53" id="page-53" href="#page-53" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an unsuccessful retrieval of the body of an article by + number: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] BODY 300256 + [S] 423 No article with that number + + Example of an unsuccessful retrieval of the body of an article by + number because no newsgroup was selected first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] BODY 300256 + [S] 412 No newsgroup selected + + Example of an attempt to retrieve the body of an article when the + currently selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] BODY + [S] 420 No current article selected + +<span class="h4"><h4><a class="selflink" name="section-6.2.4" href="#section-6.2.4">6.2.4</a>. STAT</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.2.4.1" href="#section-6.2.4.1">6.2.4.1</a>. Usage</h5></span> + + This command is mandatory. + + Syntax + STAT message-id + STAT number + STAT + + Responses + + First form (message-id specified) + 223 0|n message-id Article exists + 430 No article with that message-id + + Second form (article number specified) + 223 n message-id Article exists + 412 No newsgroup selected + 423 No article with that number + + + + + + + +<span class="grey">Feather Standards Track [Page 53]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-54" id="page-54" href="#page-54" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Third form (current article number used) + 223 n message-id Article exists + 412 No newsgroup selected + 420 Current article number is invalid + + Parameters + number Requested article number + n Returned article number + message-id Article message-id + +<span class="h5"><h5><a class="selflink" name="section-6.2.4.2" href="#section-6.2.4.2">6.2.4.2</a>. Description</h5></span> + + The STAT command behaves identically to the ARTICLE command except + that, if the article exists, it is NOT presented to the client and + the response code is 223 instead of 220. Note that the response is + NOT multi-line. + + This command allows the client to determine whether an article exists + and, in the second and third forms, what its message-id is, without + having to process an arbitrary amount of text. + +<span class="h5"><h5><a class="selflink" name="section-6.2.4.3" href="#section-6.2.4.3">6.2.4.3</a>. Examples</h5></span> + + Example of STAT on an existing article (explicitly not using an + article number): + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT + [S] 223 3000234 <45223423@example.com> + + Example of STAT on an existing article by message-id: + + [<a name="ref-C" id="ref-C">C</a>] STAT <45223423@example.com> + [S] 223 0 <45223423@example.com> + + Example of STAT on an article not on the server by message-id: + + [<a name="ref-C" id="ref-C">C</a>] STAT <i.am.not.there@example.com> + [S] 430 No Such Article Found + + Example of STAT on an article not in the server by number: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT 300256 + [S] 423 No article with that number + + + + +<span class="grey">Feather Standards Track [Page 54]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-55" id="page-55" href="#page-55" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of STAT on an article by number when no newsgroup was + selected first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT 300256 + [S] 412 No newsgroup selected + + Example of STAT on an article when the currently selected newsgroup + is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT + [S] 420 No current article selected + + Example of STAT by message-id on a server that sometimes reports the + actual article number: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT + [S] 223 3000234 <45223423@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT <45223423@example.com> + [S] 223 0 <45223423@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT <45223423@example.com> + [S] 223 3000234 <45223423@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT <45223423@example.com> + [S] 223 0 <45223423@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] GROUP alt.crossposts + [S] 211 9999 111111 222222 alt.crossposts + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT <45223423@example.com> + [S] 223 123456 <45223423@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] STAT + [S] 223 111111 <23894720@example.com> + + The first STAT command establishes the identity of an article in the + group. The second and third show that the server may, but need not, + give the article number when the message-id is specified. The fourth + STAT command shows that zero must be specified if the article isn't + in the currently selected newsgroup. The fifth shows that the + number, if provided, must be that relating to the currently selected + newsgroup. The last one shows that the current article number is + still not changed by the use of STAT with a message-id even if it + returns an article number. + + + + + +<span class="grey">Feather Standards Track [Page 55]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-56" id="page-56" href="#page-56" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-6.3" href="#section-6.3">6.3</a>. Article Posting</h3></span> + + Article posting is done in one of two ways: individual article + posting from news-reading clients using POST, and article transfer + from other news servers using IHAVE. + +<span class="h4"><h4><a class="selflink" name="section-6.3.1" href="#section-6.3.1">6.3.1</a>. POST</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.3.1.1" href="#section-6.3.1.1">6.3.1.1</a>. Usage</h5></span> + + Indicating capability: POST + + This command MUST NOT be pipelined. + + Syntax + POST + + Responses + + Initial responses + 340 Send article to be posted + 440 Posting not permitted + + Subsequent responses + 240 Article received OK + 441 Posting failed + +<span class="h5"><h5><a class="selflink" name="section-6.3.1.2" href="#section-6.3.1.2">6.3.1.2</a>. Description</h5></span> + + If posting is allowed, a 340 response MUST be returned to indicate + that the article to be posted should be sent. If posting is + prohibited for some installation-dependent reason, a 440 response + MUST be returned. + + If posting is permitted, the article MUST be in the format specified + in <a href="#section-3.6">Section 3.6</a> and MUST be sent by the client to the server as a + multi-line data block (see <a href="#section-3.1.1">Section 3.1.1</a>). Thus a single dot (".") + on a line indicates the end of the text, and lines starting with a + dot in the original text have that dot doubled during transmission. + + Following the presentation of the termination sequence by the client, + the server MUST return a response indicating success or failure of + the article transfer. Note that response codes 340 and 440 are used + in direct response to the POST command while 240 and 441 are returned + after the article is sent. + + + + + + +<span class="grey">Feather Standards Track [Page 56]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-57" id="page-57" href="#page-57" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + A response of 240 SHOULD indicate that, barring unforeseen server + errors, the posted article will be made available on the server + and/or transferred to other servers, as appropriate, possibly + following further processing. In other words, articles not wanted by + the server SHOULD be rejected with a 441 response, rather than being + accepted and then discarded silently. However, the client SHOULD NOT + assume that the article has been successfully transferred unless it + receives an affirmative response from the server and SHOULD NOT + assume that it is being made available to other clients without + explicitly checking (for example, using the STAT command). + + If the session is interrupted before the response is received, it is + possible that an affirmative response was sent but has been lost. + Therefore, in any subsequent session, the client SHOULD either check + whether the article was successfully posted before resending or + ensure that the server will allocate the same message-id to the new + attempt (see <a href="#appendix-A.2">Appendix A.2</a>). The latter approach is preferred since + the article might not have been made available for reading yet (for + example, it may have to go through a moderation process). + +<span class="h5"><h5><a class="selflink" name="section-6.3.1.3" href="#section-6.3.1.3">6.3.1.3</a>. Examples</h5></span> + + Example of a successful posting: + + [<a name="ref-C" id="ref-C">C</a>] POST + [S] 340 Input article; end with <CR-LF>.<CR-LF> + [<a href="#ref-C" title='"Demo User"'>C</a>] From: "Demo User" <nobody@example.net> + [<a href="#ref-C" title='"Demo User"'>C</a>] Newsgroups: misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] Subject: I am just a test article + [<a href="#ref-C" title='"Demo User"'>C</a>] Organization: An Example Net + [<a href="#ref-C" title='"Demo User"'>C</a>] + [<a href="#ref-C" title='"Demo User"'>C</a>] This is just a test article. + [<a href="#ref-C" title='"Demo User"'>C</a>] . + [S] 240 Article received OK + + Example of an unsuccessful posting: + + [<a name="ref-C" id="ref-C">C</a>] POST + [S] 340 Input article; end with <CR-LF>.<CR-LF> + [<a href="#ref-C" title='"Demo User"'>C</a>] From: "Demo User" <nobody@example.net> + [<a href="#ref-C" title='"Demo User"'>C</a>] Newsgroups: misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] Subject: I am just a test article + [<a href="#ref-C" title='"Demo User"'>C</a>] Organization: An Example Net + [<a href="#ref-C" title='"Demo User"'>C</a>] + [<a href="#ref-C" title='"Demo User"'>C</a>] This is just a test article. + [<a href="#ref-C" title='"Demo User"'>C</a>] . + [S] 441 Posting failed + + + + +<span class="grey">Feather Standards Track [Page 57]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-58" id="page-58" href="#page-58" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an attempt to post when posting is not allowed: + + [Initial connection set-up completed.] + [S] 201 NNTP Service Ready, posting prohibited + [<a href="#ref-C" title='"Demo User"'>C</a>] POST + [S] 440 Posting not permitted + +<span class="h4"><h4><a class="selflink" name="section-6.3.2" href="#section-6.3.2">6.3.2</a>. IHAVE</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-6.3.2.1" href="#section-6.3.2.1">6.3.2.1</a>. Usage</h5></span> + + Indicating capability: IHAVE + + This command MUST NOT be pipelined. + + Syntax + IHAVE message-id + + Responses + + Initial responses + 335 Send article to be transferred + 435 Article not wanted + 436 Transfer not possible; try again later + + Subsequent responses + 235 Article transferred OK + 436 Transfer failed; try again later + 437 Transfer rejected; do not retry + + Parameters + message-id Article message-id + +<span class="h5"><h5><a class="selflink" name="section-6.3.2.2" href="#section-6.3.2.2">6.3.2.2</a>. Description</h5></span> + + The IHAVE command informs the server that the client has an article + with the specified message-id. If the server desires a copy of that + article, a 335 response MUST be returned, instructing the client to + send the entire article. If the server does not want the article + (if, for example, the server already has a copy of it), a 435 + response MUST be returned, indicating that the article is not wanted. + Finally, if the article isn't wanted immediately but the client + should retry later if possible (if, for example, another client is in + the process of sending the same article to the server), a 436 + response MUST be returned. + + + + + + +<span class="grey">Feather Standards Track [Page 58]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-59" id="page-59" href="#page-59" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + If transmission of the article is requested, the client MUST send the + entire article, including headers and body, to the server as a + multi-line data block (see <a href="#section-3.1.1">Section 3.1.1</a>). Thus, a single dot (".") + on a line indicates the end of the text, and lines starting with a + dot in the original text have that dot doubled during transmission. + The server MUST return a 235 response, indicating that the article + was successfully transferred; a 436 response, indicating that the + transfer failed but should be tried again later; or a 437 response, + indicating that the article was rejected. + + This function differs from the POST command in that it is intended + for use in transferring already-posted articles between hosts. It + SHOULD NOT be used when the client is a personal news-reading + program, since use of this command indicates that the article has + already been posted at another site and is simply being forwarded + from another host. However, despite this, the server MAY elect not + to post or forward the article if, after further examination of the + article, it deems it inappropriate to do so. Reasons for such + subsequent rejection of an article may include problems such as + inappropriate newsgroups or distributions, disc space limitations, + article lengths, garbled headers, and the like. These are typically + restrictions enforced by the server host's news software and not + necessarily by the NNTP server itself. + + The client SHOULD NOT assume that the article has been successfully + transferred unless it receives an affirmative response from the + server. A lack of response (such as a dropped network connection or + a network timeout) SHOULD be treated the same as a 436 response. + + Because some news server software may not immediately be able to + determine whether an article is suitable for posting or forwarding, + an NNTP server MAY acknowledge the successful transfer of the article + (with a 235 response) but later silently discard it. + + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 59]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-60" id="page-60" href="#page-60" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h5"><h5><a class="selflink" name="section-6.3.2.3" href="#section-6.3.2.3">6.3.2.3</a>. Examples</h5></span> + + Example of successfully sending an article to another site: + + [<a name="ref-C" id="ref-C">C</a>] IHAVE <i.am.an.article.you.will.want@example.com> + [S] 335 Send it; end with <CR-LF>.<CR-LF> + [<a href="#ref-C" title='"Demo User"'>C</a>] Path: pathost!demo!somewhere!not-for-mail + [<a href="#ref-C" title='"Demo User"'>C</a>] From: "Demo User" <nobody@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] Newsgroups: misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] Subject: I am just a test article + [<a href="#ref-C" title='"Demo User"'>C</a>] Date: 6 Oct 1998 04:38:40 -0500 + [<a href="#ref-C" title='"Demo User"'>C</a>] Organization: An Example Com, San Jose, CA + [<a href="#ref-C" title='"Demo User"'>C</a>] Message-ID: <i.am.an.article.you.will.want@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] + [<a href="#ref-C" title='"Demo User"'>C</a>] This is just a test article. + [<a href="#ref-C" title='"Demo User"'>C</a>] . + [S] 235 Article transferred OK + + Example of sending an article to another site that rejects it. Note + that the message-id in the IHAVE command is not the same as the one + in the article headers; while this is bad practice and SHOULD NOT be + done, it is not forbidden. + + [<a name="ref-C" id="ref-C">C</a>] IHAVE <i.am.an.article.you.will.want@example.com> + [S] 335 Send it; end with <CR-LF>.<CR-LF> + [<a href="#ref-C" title='"Demo User"'>C</a>] Path: pathost!demo!somewhere!not-for-mail + [<a href="#ref-C" title='"Demo User"'>C</a>] From: "Demo User" <nobody@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] Newsgroups: misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] Subject: I am just a test article + [<a href="#ref-C" title='"Demo User"'>C</a>] Date: 6 Oct 1998 04:38:40 -0500 + [<a href="#ref-C" title='"Demo User"'>C</a>] Organization: An Example Com, San Jose, CA + [<a href="#ref-C" title='"Demo User"'>C</a>] Message-ID: <i.am.an.article.you.have@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] + [<a href="#ref-C" title='"Demo User"'>C</a>] This is just a test article. + [<a href="#ref-C" title='"Demo User"'>C</a>] . + [S] 437 Article rejected; don't send again + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 60]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-61" id="page-61" href="#page-61" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of sending an article to another site where the transfer + fails: + + [<a name="ref-C" id="ref-C">C</a>] IHAVE <i.am.an.article.you.will.want@example.com> + [S] 335 Send it; end with <CR-LF>.<CR-LF> + [<a href="#ref-C" title='"Demo User"'>C</a>] Path: pathost!demo!somewhere!not-for-mail + [<a href="#ref-C" title='"Demo User"'>C</a>] From: "Demo User" <nobody@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] Newsgroups: misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] Subject: I am just a test article + [<a href="#ref-C" title='"Demo User"'>C</a>] Date: 6 Oct 1998 04:38:40 -0500 + [<a href="#ref-C" title='"Demo User"'>C</a>] Organization: An Example Com, San Jose, CA + [<a href="#ref-C" title='"Demo User"'>C</a>] Message-ID: <i.am.an.article.you.will.want@example.com> + [<a href="#ref-C" title='"Demo User"'>C</a>] + [<a href="#ref-C" title='"Demo User"'>C</a>] This is just a test article. + [<a href="#ref-C" title='"Demo User"'>C</a>] . + [S] 436 Transfer failed + + Example of sending an article to a site that already has it: + + [<a name="ref-C" id="ref-C">C</a>] IHAVE <i.am.an.article.you.have@example.com> + [S] 435 Duplicate + + Example of sending an article to a site that requests that the + article be tried again later: + + [<a name="ref-C" id="ref-C">C</a>] IHAVE <i.am.an.article.you.defer@example.com> + [S] 436 Retry later + +<span class="h2"><h2><a class="selflink" name="section-7" href="#section-7">7</a>. Information Commands</h2></span> + + This section lists other commands that may be used at any time + between the beginning of a session and its termination. Using these + commands does not alter any state information, but the response + generated from their use may provide useful information to clients. + +<span class="h3"><h3><a class="selflink" name="section-7.1" href="#section-7.1">7.1</a>. DATE</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-7.1.1" href="#section-7.1.1">7.1.1</a>. Usage</h4></span> + + Indicating capability: READER + + Syntax + DATE + + Responses + 111 yyyymmddhhmmss Server date and time + + + + + +<span class="grey">Feather Standards Track [Page 61]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-62" id="page-62" href="#page-62" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Parameters + yyyymmddhhmmss Current UTC date and time on server + +<span class="h4"><h4><a class="selflink" name="section-7.1.2" href="#section-7.1.2">7.1.2</a>. Description</h4></span> + + This command exists to help clients find out the current Coordinated + Universal Time [<a href="#ref-TF.686-1" title='"Glossary, ITU-R Recommendation TF.686-1"'>TF.686-1</a>] from the server's perspective. This + command SHOULD NOT be used as a substitute for NTP [<a href="https://tools.ietf.org/html/rfc1305" title='"Network Time Protocol (Version 3) Specification, Implementation and Analysis"'>RFC1305</a>] but to + provide information that might be useful when using the NEWNEWS + command (see <a href="#section-7.4">Section 7.4</a>). + + The DATE command MUST return a timestamp from the same clock as is + used for determining article arrival and group creation times (see + <a href="#section-6">Section 6</a>). This clock SHOULD be monotonic, and adjustments SHOULD + be made by running it fast or slow compared to "real" time rather + than by making sudden jumps. A system providing NNTP service SHOULD + keep the system clock as accurate as possible, either with NTP or by + some other method. + + The server MUST return a 111 response specifying the date and time on + the server in the form yyyymmddhhmmss. This date and time is in + Coordinated Universal Time. + +<span class="h4"><h4><a class="selflink" name="section-7.1.3" href="#section-7.1.3">7.1.3</a>. Examples</h4></span> + + [<a name="ref-C" id="ref-C">C</a>] DATE + [S] 111 19990623135624 + +<span class="h3"><h3><a class="selflink" name="section-7.2" href="#section-7.2">7.2</a>. HELP</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-7.2.1" href="#section-7.2.1">7.2.1</a>. Usage</h4></span> + + This command is mandatory. + + Syntax + HELP + + Responses + 100 Help text follows (multi-line) + +<span class="h4"><h4><a class="selflink" name="section-7.2.2" href="#section-7.2.2">7.2.2</a>. Description</h4></span> + + This command provides a short summary of the commands that are + understood by this implementation of the server. The help text will + be presented as a multi-line data block following the 100 response + code. + + + + + +<span class="grey">Feather Standards Track [Page 62]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-63" id="page-63" href="#page-63" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + This text is not guaranteed to be in any particular format (but must + be UTF-8) and MUST NOT be used by clients as a replacement for the + CAPABILITIES command described in <a href="#section-5.2">Section 5.2</a>. + +<span class="h4"><h4><a class="selflink" name="section-7.2.3" href="#section-7.2.3">7.2.3</a>. Examples</h4></span> + + [<a name="ref-C" id="ref-C">C</a>] HELP + [S] 100 Help text follows + [S] This is some help text. There is no specific + [S] formatting requirement for this test, though + [S] it is customary for it to list the valid commands + [S] and give a brief definition of what they do. + [S] . + +<span class="h3"><h3><a class="selflink" name="section-7.3" href="#section-7.3">7.3</a>. NEWGROUPS</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-7.3.1" href="#section-7.3.1">7.3.1</a>. Usage</h4></span> + + Indicating capability: READER + + Syntax + NEWGROUPS date time [GMT] + + Responses + 231 List of new newsgroups follows (multi-line) + + Parameters + date Date in yymmdd or yyyymmdd format + time Time in hhmmss format + +<span class="h4"><h4><a class="selflink" name="section-7.3.2" href="#section-7.3.2">7.3.2</a>. Description</h4></span> + + This command returns a list of newsgroups created on the server since + the specified date and time. The results are in the same format as + the LIST ACTIVE command (see <a href="#section-7.6.3">Section 7.6.3</a>). However, they MAY + include groups not available on the server (and so not returned by + LIST ACTIVE) and MAY omit groups for which the creation date is not + available. + + The date is specified as 6 or 8 digits in the format [xx]yymmdd, + where xx is the first two digits of the year (19-99), yy is the last + two digits of the year (00-99), mm is the month (01-12), and dd is + the day of the month (01-31). Clients SHOULD specify all four digits + of the year. If the first two digits of the year are not specified + (this is supported only for backward compatibility), the year is to + be taken from the current century if yy is smaller than or equal to + the current year, and the previous century otherwise. + + + + +<span class="grey">Feather Standards Track [Page 63]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-64" id="page-64" href="#page-64" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The time is specified as 6 digits in the format hhmmss, where hh is + the hours in the 24-hour clock (00-23), mm is the minutes (00-59), + and ss is the seconds (00-60, to allow for leap seconds). The token + "GMT" specifies that the date and time are given in Coordinated + Universal Time [<a href="#ref-TF.686-1" title='"Glossary, ITU-R Recommendation TF.686-1"'>TF.686-1</a>]; if it is omitted, then the date and time + are specified in the server's local timezone. Note that there is no + way of using the protocol specified in this document to establish the + server's local timezone. + + Note that an empty list is a possible valid response and indicates + that there are no new newsgroups since that date-time. + + Clients SHOULD make all queries using Coordinated Universal Time + (i.e., by including the "GMT" argument) when possible. + +<span class="h4"><h4><a class="selflink" name="section-7.3.3" href="#section-7.3.3">7.3.3</a>. Examples</h4></span> + + Example where there are new groups: + + [<a name="ref-C" id="ref-C">C</a>] NEWGROUPS 19990624 000000 GMT + [S] 231 list of new newsgroups follows + [S] alt.rfc-writers.recovery 4 1 y + [S] tx.natives.recovery 89 56 y + [S] . + + Example where there are no new groups: + + [<a name="ref-C" id="ref-C">C</a>] NEWGROUPS 19990624 000000 GMT + [S] 231 list of new newsgroups follows + [S] . + +<span class="h3"><h3><a class="selflink" name="section-7.4" href="#section-7.4">7.4</a>. NEWNEWS</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-7.4.1" href="#section-7.4.1">7.4.1</a>. Usage</h4></span> + + Indicating capability: NEWNEWS + + Syntax + NEWNEWS wildmat date time [GMT] + + Responses + 230 List of new articles follows (multi-line) + + Parameters + wildmat Newsgroups of interest + date Date in yymmdd or yyyymmdd format + time Time in hhmmss format + + + + +<span class="grey">Feather Standards Track [Page 64]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-65" id="page-65" href="#page-65" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.4.2" href="#section-7.4.2">7.4.2</a>. Description</h4></span> + + This command returns a list of message-ids of articles posted or + received on the server, in the newsgroups whose names match the + wildmat, since the specified date and time. One message-id is sent + on each line; the order of the response has no specific significance + and may vary from response to response in the same session. A + message-id MAY appear more than once; if it does, it has the same + meaning as if it appeared only once. + + Date and time are in the same format as the NEWGROUPS command (see + <a href="#section-7.3">Section 7.3</a>). + + Note that an empty list is a possible valid response and indicates + that there is currently no new news in the relevant groups. + + Clients SHOULD make all queries in Coordinated Universal Time (i.e., + by using the "GMT" argument) when possible. + +<span class="h4"><h4><a class="selflink" name="section-7.4.3" href="#section-7.4.3">7.4.3</a>. Examples</h4></span> + + Example where there are new articles: + + [<a name="ref-C" id="ref-C">C</a>] NEWNEWS news.*,sci.* 19990624 000000 GMT + [S] 230 list of new articles by message-id follows + [S] <i.am.a.new.article@example.com> + [S] <i.am.another.new.article@example.com> + [S] . + + Example where there are no new articles: + + [<a name="ref-C" id="ref-C">C</a>] NEWNEWS alt.* 19990624 000000 GMT + [S] 230 list of new articles by message-id follows + [S] . + +<span class="h3"><h3><a class="selflink" name="section-7.5" href="#section-7.5">7.5</a>. Time</h3></span> + + As described in <a href="#section-6">Section 6</a>, each article has an arrival timestamp. + Each newsgroup also has a creation timestamp. These timestamps are + used by the NEWNEWS and NEWGROUP commands to construct their + responses. + + Clients can ensure that they do not have gaps in lists of articles or + groups by using the DATE command in the following manner: + + First session: + Issue DATE command and record result. + Issue NEWNEWS command using a previously chosen timestamp. + + + +<span class="grey">Feather Standards Track [Page 65]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-66" id="page-66" href="#page-66" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Subsequent sessions: + Issue DATE command and hold result in temporary storage. + Issue NEWNEWS command using timestamp saved from previous session. + Overwrite saved timestamp with that currently in temporary + storage. + + In order to allow for minor errors, clients MAY want to adjust the + timestamp back by two or three minutes before using it in NEWNEWS. + +<span class="h4"><h4><a class="selflink" name="section-7.5.1" href="#section-7.5.1">7.5.1</a>. Examples</h4></span> + + First session: + + [<a name="ref-C" id="ref-C">C</a>] DATE + [S] 111 20010203112233 + [<a href="#ref-C" title='"Demo User"'>C</a>] NEWNEWS local.chat 20001231 235959 GMT + [S] 230 list follows + [S] <article.1@local.service> + [S] <article.2@local.service> + [S] <article.3@local.service> + [S] . + + Second session (the client has subtracted 3 minutes from the + timestamp returned previously): + + [<a name="ref-C" id="ref-C">C</a>] DATE + [S] 111 20010204003344 + [<a href="#ref-C" title='"Demo User"'>C</a>] NEWNEWS local.chat 20010203 111933 GMT + [S] 230 list follows + [S] <article.3@local.service> + [S] <article.4@local.service> + [S] <article.5@local.service> + [S] . + + Note how <article.3@local.service> arrived in the 3 minute gap and so + is listed in both responses. + +<span class="h3"><h3><a class="selflink" name="section-7.6" href="#section-7.6">7.6</a>. The LIST Commands</h3></span> + + The LIST family of commands all return information that is multi-line + and that can, in general, be expected not to change during the + session. Often the information is related to newsgroups, in which + case the response has one line per newsgroup and a wildmat MAY be + provided to restrict the groups for which information is returned. + + The set of available keywords (including those provided by + extensions) is given in the capability list with capability label + LIST. + + + +<span class="grey">Feather Standards Track [Page 66]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-67" id="page-67" href="#page-67" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.6.1" href="#section-7.6.1">7.6.1</a>. LIST</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-7.6.1.1" href="#section-7.6.1.1">7.6.1.1</a>. Usage</h5></span> + + Indicating capability: LIST + + Syntax + LIST [keyword [wildmat|argument]] + + Responses + 215 Information follows (multi-line) + + Parameters + keyword Information requested [<a href="#ref-1">1</a>] + argument Specific to keyword + wildmat Groups of interest + + [<a name="ref-1" id="ref-1">1</a>] If no keyword is provided, it defaults to ACTIVE. + +<span class="h5"><h5><a class="selflink" name="section-7.6.1.2" href="#section-7.6.1.2">7.6.1.2</a>. Description</h5></span> + + The LIST command allows the server to provide blocks of information + to the client. This information may be global or may be related to + newsgroups; in the latter case, the information may be returned + either for all groups or only for those matching a wildmat. Each + block of information is represented by a different keyword. The + command returns the specific information identified by the keyword. + + If the information is available, it is returned as a multi-line data + block following the 215 response code. The format of the information + depends on the keyword. The information MAY be affected by the + additional argument, but the format MUST NOT be. + + If the information is based on newsgroups and the optional wildmat + argument is specified, the response is limited to only the groups (if + any) whose names match the wildmat and for which the information is + available. + + Note that an empty list is a possible valid response; for a + newsgroup-based keyword, it indicates that there are no groups + meeting the above criteria. + + If the keyword is not recognised, or if an argument is specified and + the keyword does not expect one, a 501 response code MUST BE + returned. If the keyword is recognised but the server does not + maintain the information, a 503 response code MUST BE returned. + + + + + +<span class="grey">Feather Standards Track [Page 67]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-68" id="page-68" href="#page-68" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The LIST command MUST NOT change the visible state of the server in + any way; that is, the behaviour of subsequent commands MUST NOT be + affected by whether the LIST command was issued. For example, it + MUST NOT make groups available that otherwise would not have been. + +<span class="h5"><h5><a class="selflink" name="section-7.6.1.3" href="#section-7.6.1.3">7.6.1.3</a>. Examples</h5></span> + + Example of LIST with the ACTIVE keyword: + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE + [S] 215 list of newsgroups follows + [S] misc.test 3002322 3000234 y + [S] comp.risks 442001 441099 m + [S] alt.rfc-writers.recovery 4 1 y + [S] tx.natives.recovery 89 56 y + [S] tx.natives.recovery.d 11 9 n + [S] . + + Example of LIST with no keyword: + + [<a name="ref-C" id="ref-C">C</a>] LIST + [S] 215 list of newsgroups follows + [S] misc.test 3002322 3000234 y + [S] comp.risks 442001 441099 m + [S] alt.rfc-writers.recovery 4 1 y + [S] tx.natives.recovery 89 56 y + [S] tx.natives.recovery.d 11 9 n + [S] . + + The output is identical to that of the previous example. + + Example of LIST on a newsgroup-based keyword with and without + wildmat: + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE.TIMES + [S] 215 information follows + [S] misc.test 930445408 <creatme@isc.org> + [S] alt.rfc-writers.recovery 930562309 <m@example.com> + [S] tx.natives.recovery 930678923 <sob@academ.com> + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] LIST ACTIVE.TIMES tx.* + [S] 215 information follows + [S] tx.natives.recovery 930678923 <sob@academ.com> + [S] . + + + + + + + +<span class="grey">Feather Standards Track [Page 68]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-69" id="page-69" href="#page-69" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of LIST returning an error where the keyword is recognized + but the software does not maintain this information: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] LIST XTRA.DATA + [S] 503 Data item not stored + + Example of LIST where the keyword is not recognised: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] LIST ACTIVE NEWSGROUPS ACTIVE.TIMES XTRA.DATA + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] LIST DISTRIB.PATS + [S] 501 Syntax Error + +<span class="h4"><h4><a class="selflink" name="section-7.6.2" href="#section-7.6.2">7.6.2</a>. Standard LIST Keywords</h4></span> + + This specification defines the following LIST keywords: + + +--------------+---------------+------------------------------------+ + | Keyword | Definition | Status | + +--------------+---------------+------------------------------------+ + | ACTIVE | <a href="#section-7.6.3">Section 7.6.3</a> | Mandatory if the READER capability | + | | | is advertised | + | | | | + | ACTIVE.TIMES | <a href="#section-7.6.4">Section 7.6.4</a> | Optional | + | | | | + | DISTRIB.PATS | <a href="#section-7.6.5">Section 7.6.5</a> | Optional | + | | | | + | HEADERS | <a href="#section-8.6">Section 8.6</a> | Mandatory if the HDR capability is | + | | | advertised | + | | | | + | NEWSGROUPS | <a href="#section-7.6.6">Section 7.6.6</a> | Mandatory if the READER capability | + | | | is advertised | + | | | | + | OVERVIEW.FMT | <a href="#section-8.4">Section 8.4</a> | Mandatory if the OVER capability | + | | | is advertised | + +--------------+---------------+------------------------------------+ + + + + + +<span class="grey">Feather Standards Track [Page 69]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-70" id="page-70" href="#page-70" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Where one of these LIST keywords is supported by a server, it MUST + have the meaning given in the relevant sub-section. + +<span class="h4"><h4><a class="selflink" name="section-7.6.3" href="#section-7.6.3">7.6.3</a>. LIST ACTIVE</h4></span> + + This keyword MUST be supported by servers advertising the READER + capability. + + LIST ACTIVE returns a list of valid newsgroups and associated + information. If no wildmat is specified, the server MUST include + every group that the client is permitted to select with the GROUP + command (<a href="#section-6.1.1">Section 6.1.1</a>). Each line of this list consists of four + fields separated from each other by one or more spaces: + + o The name of the newsgroup. + o The reported high water mark for the group. + o The reported low water mark for the group. + o The current status of the group on this server. + + The reported high and low water marks are as described in the GROUP + command (see <a href="#section-6.1.1">Section 6.1.1</a>), but note that they are in the opposite + order to the 211 response to that command. + + The status field is typically one of the following: + + "y" Posting is permitted. + + "n" Posting is not permitted. + + "m" Postings will be forwarded to the newsgroup moderator. + + The server SHOULD use these values when these meanings are required + and MUST NOT use them with any other meaning. Other values for the + status may exist; the definition of these other values and the + circumstances under which they are returned may be specified in an + extension or may be private to the server. A client SHOULD treat an + unrecognized status as giving no information. + + The status of a newsgroup only indicates how posts to that newsgroup + are normally processed and is not necessarily customised to the + specific client. For example, if the current client is forbidden + from posting, then this will apply equally to groups with status "y". + Conversely, a client with special privileges (not defined by this + specification) might be able to post to a group with status "n". + + + + + + + +<span class="grey">Feather Standards Track [Page 70]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-71" id="page-71" href="#page-71" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + For example: + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE + [S] 215 list of newsgroups follows + [S] misc.test 3002322 3000234 y + [S] comp.risks 442001 441099 m + [S] alt.rfc-writers.recovery 4 1 y + [S] tx.natives.recovery 89 56 y + [S] tx.natives.recovery.d 11 9 n + [S] . + + or, on an implementation that includes leading zeroes: + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE + [S] 215 list of newsgroups follows + [S] misc.test 0003002322 0003000234 y + [S] comp.risks 0000442001 0000441099 m + [S] alt.rfc-writers.recovery 0000000004 0000000001 y + [S] tx.natives.recovery 0000000089 0000000056 y + [S] tx.natives.recovery.d 0000000011 0000000009 n + [S] . + + The information is newsgroup based, and a wildmat MAY be specified, + in which case the response is limited to only the groups (if any) + whose names match the wildmat. For example: + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE *.recovery + [S] 215 list of newsgroups follows + [S] alt.rfc-writers.recovery 4 1 y + [S] tx.natives.recovery 89 56 y + [S] . + +<span class="h4"><h4><a class="selflink" name="section-7.6.4" href="#section-7.6.4">7.6.4</a>. LIST ACTIVE.TIMES</h4></span> + + This keyword is optional. + + The active.times list is maintained by some NNTP servers to contain + information about who created a particular newsgroup and when. Each + line of this list consists of three fields separated from each other + by one or more spaces. The first field is the name of the newsgroup. + The second is the time when this group was created on this news + server, measured in seconds since the start of January 1, 1970. The + third is plain text intended to describe the entity that created the + newsgroup; it is often a mailbox as defined in <a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a> [<a href="https://tools.ietf.org/html/rfc2822" title='"Internet Message Format"'>RFC2822</a>]. + For example: + + + + + + +<span class="grey">Feather Standards Track [Page 71]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-72" id="page-72" href="#page-72" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + [<a name="ref-C" id="ref-C">C</a>] LIST ACTIVE.TIMES + [S] 215 information follows + [S] misc.test 930445408 <creatme@isc.org> + [S] alt.rfc-writers.recovery 930562309 <m@example.com> + [S] tx.natives.recovery 930678923 <sob@academ.com> + [S] . + + The list MAY omit newsgroups for which the information is unavailable + and MAY include groups not available on the server; in particular, it + MAY omit all groups created before the date and time of the oldest + entry. The client MUST NOT assume that the list is complete or that + it matches the list returned by the LIST ACTIVE command + (<a href="#section-7.6.3">Section 7.6.3</a>). The NEWGROUPS command (<a href="#section-7.3">Section 7.3</a>) may provide a + better way to access this information, and the results of the two + commands SHOULD be consistent except that, if the latter is invoked + with a date and time earlier than the oldest entry in active.times + list, its result may include extra groups. + + The information is newsgroup based, and a wildmat MAY be specified, + in which case the response is limited to only the groups (if any) + whose names match the wildmat. + +<span class="h4"><h4><a class="selflink" name="section-7.6.5" href="#section-7.6.5">7.6.5</a>. LIST DISTRIB.PATS</h4></span> + + This keyword is optional. + + The distrib.pats list is maintained by some NNTP servers to assist + clients to choose a value for the content of the Distribution header + of a news article being posted. Each line of this list consists of + three fields separated from each other by a colon (":"). The first + field is a weight, the second field is a wildmat (which may be a + simple newsgroup name), and the third field is a value for the + Distribution header content. For example: + + [<a name="ref-C" id="ref-C">C</a>] LIST DISTRIB.PATS + [S] 215 information follows + [S] 10:local.*:local + [S] 5:*:world + [S] 20:local.here.*:thissite + [S] . + + The client MAY use this information to construct an appropriate + Distribution header given the name of a newsgroup. To do so, it + should determine the lines whose second field matches the newsgroup + name, select from among them the line with the highest weight (with 0 + being the lowest), and use the value of the third field to construct + the Distribution header. + + + + +<span class="grey">Feather Standards Track [Page 72]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-73" id="page-73" href="#page-73" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + The information is not newsgroup based, and an argument MUST NOT be + specified. + +<span class="h4"><h4><a class="selflink" name="section-7.6.6" href="#section-7.6.6">7.6.6</a>. LIST NEWSGROUPS</h4></span> + + This keyword MUST be supported by servers advertising the READER + capability. + + The newsgroups list is maintained by NNTP servers to contain the name + of each newsgroup that is available on the server and a short + description about the purpose of the group. Each line of this list + consists of two fields separated from each other by one or more space + or TAB characters (the usual practice is a single TAB). The first + field is the name of the newsgroup, and the second is a short + description of the group. For example: + + [<a name="ref-C" id="ref-C">C</a>] LIST NEWSGROUPS + [S] 215 information follows + [S] misc.test General Usenet testing + [S] alt.rfc-writers.recovery RFC Writers Recovery + [S] tx.natives.recovery Texas Natives Recovery + [S] . + + The list MAY omit newsgroups for which the information is unavailable + and MAY include groups not available on the server. The client MUST + NOT assume that the list is complete or that it matches the list + returned by LIST ACTIVE. + + The description SHOULD be in UTF-8. However, servers often obtain + the information from external sources. These sources may have used + different encodings (ones that use octets in the range 128 to 255 in + some other manner) and, in that case, the server MAY pass it on + unchanged. Therefore, clients MUST be prepared to receive such + descriptions. + + The information is newsgroup based, and a wildmat MAY be specified, + in which case the response is limited to only the groups (if any) + whose names match the wildmat. + +<span class="h2"><h2><a class="selflink" name="section-8" href="#section-8">8</a>. Article Field Access Commands</h2></span> + + This section lists commands that may be used to access specific + article fields; that is, headers of articles and metadata about + articles. These commands typically fetch data from an "overview + database", which is a database of headers extracted from incoming + articles plus metadata determined as the article arrives. Only + certain fields are included in the database. + + + + +<span class="grey">Feather Standards Track [Page 73]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-74" id="page-74" href="#page-74" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + This section is based on the Overview/NOV database [<a href="#ref-ROBE1995" title='"FAQ: Overview database / NOV General Information"'>ROBE1995</a>] + developed by Geoff Collyer. + +<span class="h3"><h3><a class="selflink" name="section-8.1" href="#section-8.1">8.1</a>. Article Metadata</h3></span> + + Article "metadata" is data about articles that does not occur within + the article itself. Each metadata item has a name that MUST begin + with a colon (and that MUST NOT contain a colon elsewhere within it). + As with header names, metadata item names are not case sensitive. + + When generating a metadata item, the server MUST compute it for + itself and MUST NOT trust any related value provided in the article. + (In particular, a Lines or Bytes header in the article MUST NOT be + assumed to specify the correct number of lines or bytes in the + article.) If the server has access to several non-identical copies + of an article, the value returned MUST be correct for any copy of + that article retrieved during the same session. + + This specification defines two metadata items: ":bytes" and ":lines". + Other metadata items may be defined by extensions. The names of + metadata items defined by registered extensions MUST NOT begin with + ":x-". To avoid the risk of a clash with a future registered + extension, the names of metadata items defined by private extensions + SHOULD begin with ":x-". + +<span class="h4"><h4><a class="selflink" name="section-8.1.1" href="#section-8.1.1">8.1.1</a>. The :bytes Metadata Item</h4></span> + + The :bytes metadata item for an article is a decimal integer. It + SHOULD equal the number of octets in the entire article: headers, + body, and separating empty line (counting a CRLF pair as two octets, + and excluding both the "." CRLF terminating the response and any "." + added for "dot-stuffing" purposes). + + Note to client implementers: some existing servers return a value + different from that above. The commonest reasons for this are as + follows: + + o Counting a CRLF pair as one octet. + + o Including the "." character used for dot-stuffing in the number. + + o Including the terminating "." CRLF in the number. + + o Using one copy of an article for counting the octets but then + returning another one that differs in some (permitted) manner. + + Implementations should be prepared for such variation and MUST NOT + rely on the value being accurate. + + + +<span class="grey">Feather Standards Track [Page 74]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-75" id="page-75" href="#page-75" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-8.1.2" href="#section-8.1.2">8.1.2</a>. The :lines Metadata Item</h4></span> + + The :lines metadata item for an article is a decimal integer. It + MUST equal the number of lines in the article body (excluding the + empty line separating headers and body). Equivalently, it is two + less than the number of CRLF pairs that the BODY command would return + for that article (the extra two are those following the response code + and the termination octet). + +<span class="h3"><h3><a class="selflink" name="section-8.2" href="#section-8.2">8.2</a>. Database Consistency</h3></span> + + The information stored in the overview database may change over time. + If the database records the content or absence of a given field (that + is, a header or metadata item) for all articles, it is said to be + "consistent" for that field. If it records the content of a header + for some articles but not for others that nevertheless included that + header, or if it records a metadata item for some articles but not + for others to which that item applies, it is said to be + "inconsistent" for that field. + + The LIST OVERVIEW.FMT command SHOULD list all the fields for which + the database is consistent at that moment. It MAY omit such fields + (for example, if it is not known whether the database is consistent + or inconsistent). It MUST NOT include fields for which the database + is inconsistent or that are not stored in the database. Therefore, + if a header appears in the LIST OVERVIEW.FMT output but not in the + OVER output for a given article, that header does not appear in the + article (similarly for metadata items). + + These rules assume that the fields being stored in the database + remain constant for long periods of time, and therefore the database + will be consistent. When the set of fields to be stored is changed, + it will be inconsistent until either the database is rebuilt or the + only articles remaining are those received since the change. + Therefore, the output from LIST OVERVIEW.FMT needs to be altered + twice. Firstly, before any fields stop being stored they MUST be + removed from the output; then, when the database is once more known + to be consistent, the new fields SHOULD be added to the output. + + If the HDR command uses the overview database rather than taking + information directly from the articles, the same issues of + consistency and inconsistency apply, and the LIST HEADERS command + SHOULD take the same approach as the LIST OVERVIEW.FMT command in + resolving them. + + + + + + + +<span class="grey">Feather Standards Track [Page 75]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-76" id="page-76" href="#page-76" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-8.3" href="#section-8.3">8.3</a>. OVER</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-8.3.1" href="#section-8.3.1">8.3.1</a>. Usage</h4></span> + + Indicating capability: OVER + + Syntax + OVER message-id + OVER range + OVER + + Responses + + First form (message-id specified) + 224 Overview information follows (multi-line) + 430 No article with that message-id + + Second form (range specified) + 224 Overview information follows (multi-line) + 412 No newsgroup selected + 423 No articles in that range + + Third form (current article number used) + 224 Overview information follows (multi-line) + 412 No newsgroup selected + 420 Current article number is invalid + + Parameters + range Number(s) of articles + message-id Message-id of article + +<span class="h4"><h4><a class="selflink" name="section-8.3.2" href="#section-8.3.2">8.3.2</a>. Description</h4></span> + + The OVER command returns the contents of all the fields in the + database for an article specified by message-id, or from a specified + article or range of articles in the currently selected newsgroup. + + The message-id argument indicates a specific article. The range + argument may be any of the following: + + o An article number. + + o An article number followed by a dash to indicate all following. + + o An article number followed by a dash followed by another article + number. + + If neither is specified, the current article number is used. + + + +<span class="grey">Feather Standards Track [Page 76]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-77" id="page-77" href="#page-77" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Support for the first (message-id) form is optional. If it is + supported, the OVER capability line MUST include the argument + "MSGID". Otherwise, the capability line MUST NOT include this + argument, and the OVER command MUST return the generic response code + 503 when this form is used. + + If the information is available, it is returned as a multi-line data + block following the 224 response code and contains one line per + article, sorted in numerical order of article number. (Note that + unless the argument is a range including a dash, there will be + exactly one line in the data block.) Each line consists of a number + of fields separated by a TAB. A field may be empty (in which case + there will be two adjacent TABs), and a sequence of trailing TABs may + be omitted. + + The first 8 fields MUST be the following, in order: + + "0" or article number (see below) + Subject header content + From header content + Date header content + Message-ID header content + References header content + :bytes metadata item + :lines metadata item + + If the article is specified by message-id (the first form of the + command), the article number MUST be replaced with zero, except that + if there is a currently selected newsgroup and the article is present + in that group, the server MAY use the article's number in that group. + (See the ARTICLE command (<a href="#section-6.2.1">Section 6.2.1</a>) and STAT examples + (<a href="#section-6.2.4.3">Section 6.2.4.3</a>) for more details.) In the other two forms of the + command, the article number MUST be returned. + + Any subsequent fields are the contents of the other headers and + metadata held in the database. + + For the five mandatory headers, the content of each field MUST be + based on the content of the header (that is, with the header name and + following colon and space removed). If the article does not contain + that header, or if the content is empty, the field MUST be empty. + For the two mandatory metadata items, the content of the field MUST + be just the value, with no other text. + + For all subsequent fields that contain headers, the content MUST be + the entire header line other than the trailing CRLF. For all + subsequent fields that contain metadata, the field consists of the + metadata name, a single space, and then the value. + + + +<span class="grey">Feather Standards Track [Page 77]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-78" id="page-78" href="#page-78" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + For all fields, the value is processed by first removing all CRLF + pairs (that is, undoing any folding and removing the terminating + CRLF) and then replacing each TAB with a single space. If there is + no such header in the article, no such metadata item, or no header or + item stored in the database for that article, the corresponding field + MUST be empty. + + Note that, after unfolding, the characters NUL, LF, and CR cannot + occur in the header of an article offered by a conformant server. + Nevertheless, servers SHOULD check for these characters and replace + each one by a single space (so that, for example, CR LF LF TAB will + become two spaces, since the CR and first LF will be removed by the + unfolding process). This will encourage robustness in the face of + non-conforming data; it is also possible that future versions of this + specification could permit these characters to appear in articles. + + The server SHOULD NOT produce output for articles that no longer + exist. + + If the argument is a message-id and no such article exists, a 430 + response MUST be returned. If the argument is a range or is omitted + and the currently selected newsgroup is invalid, a 412 response MUST + be returned. If the argument is a range and no articles in that + number range exist in the currently selected newsgroup, including the + case where the second number is less than the first one, a 423 + response MUST be returned. If the argument is omitted and the + current article number is invalid, a 420 response MUST be returned. + +<span class="h4"><h4><a class="selflink" name="section-8.3.3" href="#section-8.3.3">8.3.3</a>. Examples</h4></span> + + In the first four examples, TAB has been replaced by vertical bar and + some lines have been folded for readability. + + Example of a successful retrieval of overview information for an + article (explicitly not using an article number): + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER + [S] 224 Overview information follows + [S] 3000234|I am just a test article|"Demo User" + <nobody@example.com>|6 Oct 1998 04:38:40 -0500| + <45223423@example.com>|<45454@example.net>|1234| + 17|Xref: news.example.com misc.test:3000363 + [S] . + + + + + + +<span class="grey">Feather Standards Track [Page 78]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-79" id="page-79" href="#page-79" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of a successful retrieval of overview information for an + article by message-id: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] OVER MSGID + [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER <45223423@example.com> + [S] 224 Overview information follows + [S] 0|I am just a test article|"Demo User" + <nobody@example.com>|6 Oct 1998 04:38:40 -0500| + <45223423@example.com>|<45454@example.net>|1234| + 17|Xref: news.example.com misc.test:3000363 + [S] . + + Note that the article number has been replaced by "0". + + Example of the same commands on a system that does not implement + retrieval by message-id: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] OVER + [S] LIST ACTIVE NEWSGROUPS OVERVIEW.FMT + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER <45223423@example.com> + [S] 503 Overview by message-id unsupported + + + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 79]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-80" id="page-80" href="#page-80" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of a successful retrieval of overview information for a range + of articles: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER 3000234-3000240 + [S] 224 Overview information follows + [S] 3000234|I am just a test article|"Demo User" + <nobody@example.com>|6 Oct 1998 04:38:40 -0500| + <45223423@example.com>|<45454@example.net>|1234| + 17|Xref: news.example.com misc.test:3000363 + [S] 3000235|Another test article|nobody@nowhere.to + (Demo User)|6 Oct 1998 04:38:45 -0500|<45223425@to.to>|| + 4818|37||Distribution: fi + [S] 3000238|Re: I am just a test article|somebody@elsewhere.to| + 7 Oct 1998 11:38:40 +1200|<kfwer3v@elsewhere.to>| + <45223423@to.to>|9234|51 + [S] . + + Note the missing "References" and Xref headers in the second line, + the missing trailing fields in the first and last lines, and that + there are only results for those articles that still exist. + + Example of an unsuccessful retrieval of overview information on an + article by number: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER 300256 + [S] 423 No such article in this group + + Example of an invalid range: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER 3000444-3000222 + [S] 423 Empty range + + Example of an unsuccessful retrieval of overview information by + number because no newsgroup was selected first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER + [S] 412 No newsgroup selected + + + + + + + +<span class="grey">Feather Standards Track [Page 80]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-81" id="page-81" href="#page-81" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an attempt to retrieve information when the currently + selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] OVER + [S] 420 No current article selected + +<span class="h3"><h3><a class="selflink" name="section-8.4" href="#section-8.4">8.4</a>. LIST OVERVIEW.FMT</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-8.4.1" href="#section-8.4.1">8.4.1</a>. Usage</h4></span> + + Indicating capability: OVER + + Syntax + LIST OVERVIEW.FMT + + Responses + 215 Information follows (multi-line) + +<span class="h4"><h4><a class="selflink" name="section-8.4.2" href="#section-8.4.2">8.4.2</a>. Description</h4></span> + + See <a href="#section-7.6.1">Section 7.6.1</a> for general requirements of the LIST command. + + The LIST OVERVIEW.FMT command returns a description of the fields in + the database for which it is consistent (as described above). The + information is returned as a multi-line data block following the 215 + response code. The information contains one line per field in the + order in which they are returned by the OVER command; the first 7 + lines MUST (except for the case of letters) be exactly as follows: + + Subject: + From: + Date: + Message-ID: + References: + :bytes + :lines + + For compatibility with existing implementations, the last two lines + MAY instead be: + + Bytes: + Lines: + + even though they refer to metadata, not headers. + + + + + +<span class="grey">Feather Standards Track [Page 81]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-82" id="page-82" href="#page-82" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + All subsequent lines MUST consist of either a header name followed by + ":full", or the name of a piece of metadata. + + There are no leading or trailing spaces in the output. + + Note that the 7 fixed lines describe the 2nd to 8th fields of the + OVER output. The "full" suffix (which may use either uppercase, + lowercase, or a mix) is a reminder that the corresponding fields + include the header name. + + This command MAY generate different results if it is used more than + once in a session. + + If the OVER command is not implemented, the meaning of the output + from this command is not specified, but it must still meet the above + syntactic requirements. + +<span class="h4"><h4><a class="selflink" name="section-8.4.3" href="#section-8.4.3">8.4.3</a>. Examples</h4></span> + + Example of LIST OVERVIEW.FMT output corresponding to the example OVER + output above, in the preferred format: + + [<a name="ref-C" id="ref-C">C</a>] LIST OVERVIEW.FMT + [S] 215 Order of fields in overview database. + [S] Subject: + [S] From: + [S] Date: + [S] Message-ID: + [S] References: + [S] :bytes + [S] :lines + [S] Xref:full + [S] Distribution:full + [S] . + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 82]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-83" id="page-83" href="#page-83" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of LIST OVERVIEW.FMT output corresponding to the example OVER + output above, in the alternative format: + + [<a name="ref-C" id="ref-C">C</a>] LIST OVERVIEW.FMT + [S] 215 Order of fields in overview database. + [S] Subject: + [S] From: + [S] Date: + [S] Message-ID: + [S] References: + [S] Bytes: + [S] Lines: + [S] Xref:FULL + [S] Distribution:FULL + [S] . + +<span class="h3"><h3><a class="selflink" name="section-8.5" href="#section-8.5">8.5</a>. HDR</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-8.5.1" href="#section-8.5.1">8.5.1</a>. Usage</h4></span> + + Indicating capability: HDR + + Syntax + HDR field message-id + HDR field range + HDR field + + Responses + + First form (message-id specified) + 225 Headers follow (multi-line) + 430 No article with that message-id + + Second form (range specified) + 225 Headers follow (multi-line) + 412 No newsgroup selected + 423 No articles in that range + + Third form (current article number used) + 225 Headers follow (multi-line) + 412 No newsgroup selected + 420 Current article number is invalid + + Parameters + field Name of field + range Number(s) of articles + message-id Message-id of article + + + + +<span class="grey">Feather Standards Track [Page 83]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-84" id="page-84" href="#page-84" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-8.5.2" href="#section-8.5.2">8.5.2</a>. Description</h4></span> + + The HDR command provides access to specific fields from an article + specified by message-id, or from a specified article or range of + articles in the currently selected newsgroup. It MAY take the + information directly from the articles or from the overview database. + In the case of headers, an implementation MAY restrict the use of + this command to a specific list of headers or MAY allow it to be used + with any header; it may behave differently when it is used with a + message-id argument and when it is used with a range or no argument. + + The required field argument is the name of a header with the colon + omitted (e.g., "subject") or the name of a metadata item including + the leading colon (e.g., ":bytes"), and is case insensitive. + + The message-id argument indicates a specific article. The range + argument may be any of the following: + + o An article number. + + o An article number followed by a dash to indicate all following. + + o An article number followed by a dash followed by another article + number. + + If neither is specified, the current article number is used. + + If the information is available, it is returned as a multi-line data + block following the 225 response code and contains one line for each + article in the range that exists. (Note that unless the argument is + a range including a dash, there will be exactly one line in the data + block.) The line consists of the article number, a space, and then + the contents of the field. In the case of a header, the header name, + the colon, and the first space after the colon are all omitted. + + If the article is specified by message-id (the first form of the + command), the article number MUST be replaced with zero, except that + if there is a currently selected newsgroup and the article is present + in that group, the server MAY use the article's number in that group. + (See the ARTICLE command (<a href="#section-6.2.1">Section 6.2.1</a>) and STAT examples + (<a href="#section-6.2.4.3">Section 6.2.4.3</a>) for more details.) In the other two forms of the + command, the article number MUST be returned. + + Header contents are modified as follows: all CRLF pairs are removed, + and then each TAB is replaced with a single space. (Note that this + is the same transformation as is performed by the OVER command + (<a href="#section-8.3.2">Section 8.3.2</a>), and the same comment concerning NUL, CR, and LF + applies.) + + + +<span class="grey">Feather Standards Track [Page 84]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-85" id="page-85" href="#page-85" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Note the distinction between headers and metadata appearing to have + the same meaning. Headers are always taken unchanged from the + article; metadata are always calculated. For example, a request for + "Lines" returns the contents of the "Lines" header of the specified + articles, if any, no matter whether they accurately state the number + of lines, while a request for ":lines" returns the line count + metadata, which is always the actual number of lines irrespective of + what any header may state. + + If the requested header is not present in the article, or if it is + present but empty, a line for that article is included in the output, + but the header content portion of the line is empty (the space after + the article number MAY be retained or omitted). If the header occurs + in a given article more than once, only the content of the first + occurrence is returned by HDR. If any article number in the provided + range does not exist in the group, no line for that article number is + included in the output. + + If the second argument is a message-id and no such article exists, a + 430 response MUST be returned. If the second argument is a range or + is omitted and the currently selected newsgroup is invalid, a 412 + response MUST be returned. If the second argument is a range and no + articles in that number range exist in the currently selected + newsgroup, including the case where the second number is less than + the first one, a 423 response MUST be returned. If the second + argument is omitted and the current article number is invalid, a 420 + response MUST be returned. + + A server MAY only allow HDR commands for a limited set of fields; it + may behave differently in this respect for the first (message-id) + form from how it would for the other forms. If so, it MUST respond + with the generic 503 response to attempts to request other fields, + rather than return erroneous results, such as a successful empty + response. + + If HDR uses the overview database and it is inconsistent for the + requested field, the server MAY return what results it can, or it MAY + respond with the generic 503 response. In the latter case, the field + MUST NOT appear in the output from LIST HEADERS. + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 85]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-86" id="page-86" href="#page-86" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-8.5.3" href="#section-8.5.3">8.5.3</a>. Examples</h4></span> + + Example of a successful retrieval of subject lines from a range of + articles (3000235 has no Subject header, and 3000236 is missing): + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR Subject 3000234-3000238 + [S] 225 Headers follow + [S] 3000234 I am just a test article + [S] 3000235 + [S] 3000237 Re: I am just a test article + [S] 3000238 Ditto + [S] . + + Example of a successful retrieval of line counts from a range of + articles: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR :lines 3000234-3000238 + [S] 225 Headers follow + [S] 3000234 42 + [S] 3000235 5 + [S] 3000237 11 + [S] 3000238 2378 + [S] . + + Example of a successful retrieval of the subject line from an article + by message-id: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR subject <i.am.a.test.article@example.com> + [S] 225 Header information follows + [S] 0 I am just a test article + [S] . + + Example of a successful retrieval of the subject line from the + current article: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR subject + [S] 225 Header information follows + [S] 3000234 I am just a test article + [S] . + + + + +<span class="grey">Feather Standards Track [Page 86]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-87" id="page-87" href="#page-87" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an unsuccessful retrieval of a header from an article by + message-id: + + [<a name="ref-C" id="ref-C">C</a>] HDR subject <i.am.not.there@example.com> + [S] 430 No Such Article Found + + Example of an unsuccessful retrieval of headers from articles by + number because no newsgroup was selected first: + + [Assumes currently selected newsgroup is invalid.] + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR subject 300256- + [S] 412 No newsgroup selected + + Example of an unsuccessful retrieval of headers because the currently + selected newsgroup is empty: + + [<a name="ref-C" id="ref-C">C</a>] GROUP example.empty.newsgroup + [S] 211 0 0 0 example.empty.newsgroup + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR subject 1- + [S] 423 No articles in that range + + Example of an unsuccessful retrieval of headers because the server + does not allow HDR commands for that header: + + [<a name="ref-C" id="ref-C">C</a>] GROUP misc.test + [S] 211 1234 3000234 3002322 misc.test + [<a href="#ref-C" title='"Demo User"'>C</a>] HDR Content-Type 3000234-3000238 + [S] 503 HDR not permitted on Content-Type + +<span class="h3"><h3><a class="selflink" name="section-8.6" href="#section-8.6">8.6</a>. LIST HEADERS</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-8.6.1" href="#section-8.6.1">8.6.1</a>. Usage</h4></span> + + Indicating capability: HDR + + Syntax + LIST HEADERS [MSGID|RANGE] + + Responses + 215 Field list follows (multi-line) + + Parameters + MSGID Requests list for access by message-id + RANGE Requests list for access by range + + + + + + + +<span class="grey">Feather Standards Track [Page 87]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-88" id="page-88" href="#page-88" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-8.6.2" href="#section-8.6.2">8.6.2</a>. Description</h4></span> + + See <a href="#section-7.6.1">Section 7.6.1</a> for general requirements of the LIST command. + + The LIST HEADERS command returns a list of fields that may be + retrieved using the HDR command. + + The information is returned as a multi-line data block following the + 215 response code and contains one line for each field name + (excluding the trailing colon for headers and including the leading + colon for metadata items). If the implementation allows any header + to be retrieved, it MUST NOT include any header names in the list but + MUST include the special entry ":" (a single colon on its own). It + MUST still explicitly list any metadata items that are available. + The order of items in the list is not significant; the server need + not even consistently return the same order. The list MAY be empty + (though in this circumstance there is little point in providing the + HDR command). + + An implementation that also supports the OVER command SHOULD at least + permit all the headers and metadata items listed in the output from + the LIST OVERVIEW.FMT command. + + If the server treats the first form of the HDR command (message-id + specified) differently from the other two forms (range specified or + current article number used) in respect of which headers or metadata + items are available, then the following apply: + + o If the MSGID argument is specified, the results MUST be those + available for the first form of the HDR command. + + o If the RANGE argument is specified, the results MUST be those + available for the second and third forms of the HDR command. + + o If no argument is specified, the results MUST be those available + in all forms of the HDR command (that is, it MUST only list those + items listed in both the previous cases). + + If the server does not treat the various forms differently, then it + MUST ignore any argument and always produce the same results (though + not necessarily always in the same order). + + If the HDR command is not implemented, the meaning of the output from + this command is not specified, but it must still meet the above + syntactic requirements. + + + + + + +<span class="grey">Feather Standards Track [Page 88]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-89" id="page-89" href="#page-89" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h4"><h4><a class="selflink" name="section-8.6.3" href="#section-8.6.3">8.6.3</a>. Examples</h4></span> + + Example of an implementation providing access to only a few headers: + + [<a name="ref-C" id="ref-C">C</a>] LIST HEADERS + [S] 215 headers supported: + [S] Subject + [S] Message-ID + [S] Xref + [S] . + + Example of an implementation providing access to the same fields as + the first example in <a href="#section-8.4.3">Section 8.4.3</a>: + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] OVER + [S] HDR + [S] LIST ACTIVE NEWSGROUPS HEADERS OVERVIEW.FMT + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] LIST HEADERS + [S] 215 headers and metadata items supported: + [S] Date + [S] Distribution + [S] From + [S] Message-ID + [S] References + [S] Subject + [S] Xref + [S] :bytes + [S] :lines + [S] . + + Example of an implementation providing access to all headers: + + [<a name="ref-C" id="ref-C">C</a>] LIST HEADERS + [S] 215 metadata items supported: + [S] : + [S] :lines + [S] :bytes + [S] :x-article-number + [S] . + + + + + + + +<span class="grey">Feather Standards Track [Page 89]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-90" id="page-90" href="#page-90" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Example of an implementation distinguishing the first form of the HDR + command from the other two forms: + + [<a name="ref-C" id="ref-C">C</a>] LIST HEADERS RANGE + [S] 215 metadata items supported: + [S] : + [S] :lines + [S] :bytes + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] LIST HEADERS MSGID + [S] 215 headers and metadata items supported: + [S] Date + [S] Distribution + [S] From + [S] Message-ID + [S] References + [S] Subject + [S] :lines + [S] :bytes + [S] :x-article-number + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] LIST HEADERS + [S] 215 headers and metadata items supported: + [S] Date + [S] Distribution + [S] From + [S] Message-ID + [S] References + [S] Subject + [S] :lines + [S] :bytes + [S] . + + Note that :x-article-number does not appear in the last set of + output. + +<span class="h2"><h2><a class="selflink" name="section-9" href="#section-9">9</a>. Augmented BNF Syntax for NNTP</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-9.1" href="#section-9.1">9.1</a>. Introduction</h3></span> + + Each of the following sections describes the syntax of a major + element of NNTP. This syntax extends and refines the descriptions + elsewhere in this specification and should be given precedence when + resolving apparent conflicts. Note that ABNF [<a href="https://tools.ietf.org/html/rfc4234" title='"Augmented BNF for Syntax Specifications: ABNF"'>RFC4234</a>] strings are + case insensitive. Non-terminals used in several places are defined + in a separate section at the end. + + + + + +<span class="grey">Feather Standards Track [Page 90]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-91" id="page-91" href="#page-91" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Between them, the non-terminals <command-line>, <command-datastream>, + <command-continuation>, and <response> specify the text that flows + between client and server. A consistent naming scheme is used in + this document for the non-terminals relating to each command, and + SHOULD be used by the specification of registered extensions. + + For each command, the sequence is as follows: + + o The client sends an instance of <command-line>; the syntax for the + EXAMPLE command is <example-command>. + + o If the client is one that immediately streams data, it sends an + instance of <command-datastream>; the syntax for the EXAMPLE + command is <example-datastream>. + + o The server sends an instance of <response>. + + * The initial response line is independent of the command that + generated it; if the 000 response has arguments, the syntax of + the initial line is <response-000-content>. + + * If the response is multi-line, the initial line is followed by + a <multi-line-data-block>. The syntax for the contents of this + block after "dot-stuffing" has been removed is (for the 000 + response to the EXAMPLE command) <example-000-ml-content> and + is an instance of <multi-line-response-content>. + + o While the latest response is one that indicates more data is + required (in general, a 3xx response): + + * the client sends an instance of <command-continuation>; the + syntax for the EXAMPLE continuation following a 333 response is + <example-333-continuation>; + + * the server sends another instance of <response>, as above. + + (There are no commands in this specification that immediately stream + data, but this non-terminal is defined for the convenience of + extensions.) + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 91]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-92" id="page-92" href="#page-92" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-9.2" href="#section-9.2">9.2</a>. Commands</h3></span> + + This syntax defines the non-terminal <command-line>, which represents + what is sent from the client to the server (see <a href="#section-3.1">section 3.1</a> for + limits on lengths). + + command-line = command EOL + command = X-command + X-command = keyword *(WS token) + + command =/ article-command / + body-command / + capabilities-command / + date-command / + group-command / + hdr-command / + head-command / + help-command / + ihave-command / + last-command / + list-command / + listgroup-command / + mode-reader-command / + newgroups-command / + newnews-command / + next-command / + over-command / + post-command / + quit-command / + stat-command + + article-command = "ARTICLE" [WS article-ref] + body-command = "BODY" [WS article-ref] + capabilities-command = "CAPABILITIES" [WS keyword] + date-command = "DATE" + group-command = "GROUP" [WS newsgroup-name] + hdr-command = "HDR" WS header-meta-name [WS range-ref] + head-command = "HEAD" [WS article-ref] + help-command = "HELP" + ihave-command = "IHAVE" WS message-id + last-command = "LAST" + list-command = "LIST" [WS list-arguments] + listgroup-command = "LISTGROUP" [WS newsgroup-name [WS range]] + mode-reader-command = "MODE" WS "READER" + newgroups-command = "NEWGROUPS" WS date-time + newnews-command = "NEWNEWS" WS wildmat WS date-time + next-command = "NEXT" + over-command = "OVER" [WS range-ref] + + + +<span class="grey">Feather Standards Track [Page 92]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-93" id="page-93" href="#page-93" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + post-command = "POST" + quit-command = "QUIT" + stat-command = "STAT" [WS article-ref] + + article-ref = article-number / message-id + date = date2y / date4y + date4y = 4DIGIT 2DIGIT 2DIGIT + date2y = 2DIGIT 2DIGIT 2DIGIT + date-time = date WS time [WS "GMT"] + header-meta-name = header-name / metadata-name + list-arguments = keyword [WS token] + metadata-name = ":" 1*A-NOTCOLON + range = article-number ["-" [article-number]] + range-ref = range / message-id + time = 2DIGIT 2DIGIT 2DIGIT + +<span class="h3"><h3><a class="selflink" name="section-9.3" href="#section-9.3">9.3</a>. Command Continuation</h3></span> + + This syntax defines the further material sent by the client in the + case of multi-stage commands and those that stream data. + + command-datastream = UNDEFINED + ; not used, provided as a hook for extensions + command-continuation = ihave-335-continuation / + post-340-continuation + + ihave-335-continuation = encoded-article + post-340-continuation = encoded-article + + encoded-article = multi-line-data-block + ; after undoing the "dot-stuffing", this MUST match <article> + +<span class="h3"><h3><a class="selflink" name="section-9.4" href="#section-9.4">9.4</a>. Responses</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-9.4.1" href="#section-9.4.1">9.4.1</a>. Generic Responses</h4></span> + + This syntax defines the non-terminal <response>, which represents the + generic form of responses; that is, what is sent from the server to + the client in response to a <command> or a <command-continuation>. + + response = simple-response / multi-line-response + simple-response = initial-response-line + multi-line-response = initial-response-line multi-line-data-block + + initial-response-line = + initial-response-content [SP trailing-comment] CRLF + initial-response-content = X-initial-response-content + X-initial-response-content = 3DIGIT *(SP response-argument) + + + +<span class="grey">Feather Standards Track [Page 93]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-94" id="page-94" href="#page-94" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + response-argument = 1*A-CHAR + trailing-comment = *U-CHAR + +<span class="h4"><h4><a class="selflink" name="section-9.4.2" href="#section-9.4.2">9.4.2</a>. Initial Response Line Contents</h4></span> + + This syntax defines the specific initial response lines for the + various commands in this specification (see <a href="#section-3.1">section 3.1</a> for limits on + lengths). Only those response codes with arguments are listed. + + initial-response-content =/ response-111-content / + response-211-content / + response-220-content / + response-221-content / + response-222-content / + response-223-content / + response-401-content + + response-111-content = "111" SP date4y time + response-211-content = "211" 3(SP article-number) SP newsgroup-name + response-220-content = "220" SP article-number SP message-id + response-221-content = "221" SP article-number SP message-id + response-222-content = "222" SP article-number SP message-id + response-223-content = "223" SP article-number SP message-id + response-401-content = "401" SP capability-label + +<span class="h4"><h4><a class="selflink" name="section-9.4.3" href="#section-9.4.3">9.4.3</a>. Multi-line Response Contents</h4></span> + + This syntax defines the content of the various multi-line responses; + more precisely, it defines the part of the response in the multi-line + data block after any "dot-stuffing" has been undone. The numeric + portion of each non-terminal name indicates the response code that is + followed by this data. + + multi-line-response-content = article-220-ml-content / + body-222-ml-content / + capabilities-101-ml-content / + hdr-225-ml-content / + head-221-ml-content / + help-100-ml-content / + list-215-ml-content / + listgroup-211-ml-content / + newgroups-231-ml-content / + newnews-230-ml-content / + over-224-ml-content + + article-220-ml-content = article + body-222-ml-content = body + capabilities-101-ml-content = version-line CRLF + + + +<span class="grey">Feather Standards Track [Page 94]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-95" id="page-95" href="#page-95" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + *(capability-line CRLF) + hdr-225-ml-content = *(article-number SP hdr-content CRLF) + head-221-ml-content = 1*header + help-100-ml-content = *(*U-CHAR CRLF) + list-215-ml-content = list-content + listgroup-211-ml-content = *(article-number CRLF) + newgroups-231-ml-content = active-groups-list + newnews-230-ml-content = *(message-id CRLF) + over-224-ml-content = *(article-number over-content CRLF) + + active-groups-list = *(newsgroup-name SPA article-number + SPA article-number SPA newsgroup-status CRLF) + hdr-content = *S-NONTAB + hdr-n-content = [(header-name ":" / metadata-name) SP hdr-content] + list-content = body + newsgroup-status = %x79 / %x6E / %x6D / private-status + over-content = 1*6(TAB hdr-content) / + 7(TAB hdr-content) *(TAB hdr-n-content) + private-status = token ; except the values in newsgroup-status + +<span class="h3"><h3><a class="selflink" name="section-9.5" href="#section-9.5">9.5</a>. Capability Lines</h3></span> + + This syntax defines the generic form of a capability line in the + capabilities list (see <a href="#section-3.3.1">Section 3.3.1</a>). + + capability-line = capability-entry + capability-entry = X-capability-entry + X-capability-entry = capability-label *(WS capability-argument) + capability-label = keyword + capability-argument = token + + This syntax defines the specific capability entries for the + capabilities in this specification. + + capability-entry =/ + hdr-capability / + ihave-capability / + implementation-capability / + list-capability / + mode-reader-capability / + newnews-capability / + over-capability / + post-capability / + reader-capability + + hdr-capability = "HDR" + ihave-capability = "IHAVE" + implementation-capability = "IMPLEMENTATION" *(WS token) + + + +<span class="grey">Feather Standards Track [Page 95]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-96" id="page-96" href="#page-96" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + list-capability = "LIST" 1*(WS keyword) + mode-reader-capability = "MODE-READER" + newnews-capability = "NEWNEWS" + over-capability = "OVER" [WS "MSGID"] + post-capability = "POST" + reader-capability = "READER" + + version-line = "VERSION" 1*(WS version-number) + version-number = nzDIGIT *5DIGIT + +<span class="h3"><h3><a class="selflink" name="section-9.6" href="#section-9.6">9.6</a>. LIST Variants</h3></span> + + This section defines more specifically the keywords for the LIST + command and the syntax of the corresponding response contents. + + ; active + list-arguments =/ "ACTIVE" [WS wildmat] + list-content =/ list-active-content + list-active-content = active-groups-list + + + ; active.times + list-arguments =/ "ACTIVE.TIMES" [WS wildmat] + list-content =/ list-active-times-content + list-active-times-content = + *(newsgroup-name SPA 1*DIGIT SPA newsgroup-creator CRLF) + newsgroup-creator = U-TEXT + + + ; distrib.pats + list-arguments =/ "DISTRIB.PATS" + list-content =/ list-distrib-pats-content + list-distrib-pats-content = + *(1*DIGIT ":" wildmat ":" distribution CRLF) + distribution = token + + + ; headers + list-arguments =/ "HEADERS" [WS ("MSGID" / "RANGE")] + list-content =/ list-headers-content + list-headers-content = *(header-meta-name CRLF) / + *((metadata-name / ":") CRLF) + + + ; newsgroups + list-arguments =/ "NEWSGROUPS" [WS wildmat] + list-content =/ list-newsgroups-content + list-newsgroups-content = + + + +<span class="grey">Feather Standards Track [Page 96]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-97" id="page-97" href="#page-97" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + *(newsgroup-name WS newsgroup-description CRLF) + newsgroup-description = S-TEXT + + + ; overview.fmt + list-arguments =/ "OVERVIEW.FMT" + list-content =/ list-overview-fmt-content + list-overview-fmt-content = "Subject:" CRLF + "From:" CRLF + "Date:" CRLF + "Message-ID:" CRLF + "References:" CRLF + ( ":bytes" CRLF ":lines" / "Bytes:" CRLF "Lines:") CRLF + *((header-name ":full" / metadata-name) CRLF) + +<span class="h3"><h3><a class="selflink" name="section-9.7" href="#section-9.7">9.7</a>. Articles</h3></span> + + This syntax defines the non-terminal <article>, which represents the + format of an article as described in <a href="#section-3.6">Section 3.6</a>. + + article = 1*header CRLF body + header = header-name ":" [CRLF] SP header-content CRLF + header-content = *(S-CHAR / [CRLF] WS) + body = *(*B-CHAR CRLF) + +<span class="h3"><h3><a class="selflink" name="section-9.8" href="#section-9.8">9.8</a>. General Non-terminals</h3></span> + + These non-terminals are used at various places in the syntax and are + collected here for convenience. A few of these non-terminals are not + used in this specification but are provided for the consistency and + convenience of extension authors. + + multi-line-data-block = content-lines termination + content-lines = *([content-text] CRLF) + content-text = (".." / B-NONDOT) *B-CHAR + termination = "." CRLF + + article-number = 1*16DIGIT + header-name = 1*A-NOTCOLON + keyword = ALPHA 2*(ALPHA / DIGIT / "." / "-") + message-id = "<" 1*248A-NOTGT ">" + newsgroup-name = 1*wildmat-exact + token = 1*P-CHAR + + wildmat = wildmat-pattern *("," ["!"] wildmat-pattern) + wildmat-pattern = 1*wildmat-item + wildmat-item = wildmat-exact / wildmat-wild + wildmat-exact = %x22-29 / %x2B / %x2D-3E / %x40-5A / %x5E-7E / + + + +<span class="grey">Feather Standards Track [Page 97]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-98" id="page-98" href="#page-98" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + UTF8-non-ascii ; exclude ! * , ? [ \ ] + wildmat-wild = "*" / "?" + + base64 = *(4base64-char) [base64-terminal] + base64-char = UPPER / LOWER / DIGIT / "+" / "/" + base64-terminal = 2base64-char "==" / 3base64-char "=" + + ; Assorted special character sets + ; A- means based on US-ASCII, excluding controls and SP + ; P- means based on UTF-8, excluding controls and SP + ; U- means based on UTF-8, excluding NUL CR and LF + ; B- means based on bytes, excluding NUL CR and LF + A-CHAR = %x21-7E + A-NOTCOLON = %x21-39 / %x3B-7E ; exclude ":" + A-NOTGT = %x21-3D / %x3F-7E ; exclude ">" + P-CHAR = A-CHAR / UTF8-non-ascii + U-CHAR = CTRL / TAB / SP / A-CHAR / UTF8-non-ascii + U-NONTAB = CTRL / SP / A-CHAR / UTF8-non-ascii + U-TEXT = P-CHAR *U-CHAR + B-CHAR = CTRL / TAB / SP / %x21-FF + B-NONDOT = CTRL / TAB / SP / %x21-2D / %x2F-FF ; exclude "." + + ALPHA = UPPER / LOWER ; use only when case-insensitive + CR = %x0D + CRLF = CR LF + CTRL = %x01-08 / %x0B-0C / %x0E-1F + DIGIT = %x30-39 + nzDIGIT = %x31-39 + EOL = *(SP / TAB) CRLF + LF = %x0A + LOWER = %x61-7A + SP = %x20 + SPA = 1*SP + TAB = %x09 + UPPER = %x41-5A + UTF8-non-ascii = UTF8-2 / UTF8-3 / UTF8-4 + UTF8-2 = %xC2-DF UTF8-tail + UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2UTF8-tail / + %xED %x80-9F UTF8-tail / %xEE-EF 2UTF8-tail + UTF8-4 = %xF0 %x90-BF 2UTF8-tail / %xF1-F3 3UTF8-tail / + %xF4 %x80-8F 2UTF8-tail + UTF8-tail = %x80-BF + WS = 1*(SP / TAB) + + The following non-terminals require special consideration. They + represent situations where material SHOULD be restricted to UTF-8, + but implementations MUST be able to cope with other character + encodings. Therefore, there are two sets of definitions for them. + + + +<span class="grey">Feather Standards Track [Page 98]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-99" id="page-99" href="#page-99" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Implementations MUST accept any content that meets this syntax: + + S-CHAR = %x21-FF + S-NONTAB = CTRL / SP / S-CHAR + S-TEXT = (CTRL / S-CHAR) *B-CHAR + + and MAY pass such content on unaltered. + + When generating new content or re-encoding existing content, + implementations SHOULD conform to this syntax: + + S-CHAR = P-CHAR + S-NONTAB = U-NONTAB + S-TEXT = U-TEXT + +<span class="h3"><h3><a class="selflink" name="section-9.9" href="#section-9.9">9.9</a>. Extensions and Validation</h3></span> + + The specification of a registered extension MUST include formal + syntax that defines additional forms for the following non-terminals: + + command + for each new command other than a variant of the LIST command - + the syntax of each command MUST be compatible with the definition + of <X-command>; + + command-datastream + for each new command that immediately streams data; + + command-continuation + for each new command that sends further material after the initial + command line - the syntax of each continuation MUST be exactly + what is sent to the server, including any escape mechanisms such + as "dot-stuffing"; + + initial-response-content + for each new response code that has arguments - the syntax of each + response MUST be compatible with the definition of <X-initial- + response-content>; + + multi-line-response-content + for each new response code that has a multi-line response - the + syntax MUST show the response after the lines containing the + response code and the terminating octet have been removed and any + "dot-stuffing" undone; + + capability-entry + for each new capability label - the syntax of each entry MUST be + compatible with the definition of <X-capability-entry>; + + + +<span class="grey">Feather Standards Track [Page 99]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-100" id="page-100" href="#page-100" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + list-arguments + for each new variant of the LIST command - the syntax of each + entry MUST be compatible with the definition of <X-command>; + + list-content + for each new variant of the LIST command - the syntax MUST show + the response after the lines containing the 215 response code and + the terminating octet have been removed and any "dot-stuffing" + undone. + + The =/ notation of ABNF [<a href="https://tools.ietf.org/html/rfc4234" title='"Augmented BNF for Syntax Specifications: ABNF"'>RFC4234</a>] and the naming conventions + described in <a href="#section-9.1">Section 9.1</a> SHOULD be used for this. + + When the syntax in this specification, or syntax based on it, is + validated, it should be noted that: + + o the non-terminals <command-line>, <command-datastream>, + <command-continuation>, <response>, and + <multi-line-response-content> describe basic concepts of the + protocol and are not referred to by any other rule; + + o the non-terminal <base64> is provided for the convenience of + extension authors and is not referred to by any rule in this + specification; + + o for the reasons given above, the non-terminals <S-CHAR>, + <S-NONTAB>, and <S-TEXT> each have two definitions; and + + o the non-terminal <UNDEFINED> is deliberately not defined. + +<span class="h2"><h2><a class="selflink" name="section-10" href="#section-10">10</a>. Internationalisation Considerations</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-10.1" href="#section-10.1">10.1</a>. Introduction and Historical Situation</h3></span> + + <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> [<a href="https://tools.ietf.org/html/rfc977" title='"Network News Transfer Protocol"'>RFC977</a>] was written at a time when internationalisation was + not seen as a significant issue. As such, it was written on the + assumption that all communication would be in ASCII and use only a + 7-bit transport layer, although in practice just about all known + implementations are 8-bit clean. + + Since then, Usenet and NNTP have spread throughout the world. In the + absence of standards for handling the issues of language and + character sets, countries, newsgroup hierarchies, and individuals + have found a variety of solutions that work for them but that are not + necessarily appropriate elsewhere. For example, some have adopted a + default 8-bit character set appropriate to their needs (such as + ISO/IEC 8859-1 in Western Europe or KOI-8 in Russia), others have + used ASCII (either US-ASCII or national variants) in headers but + + + +<span class="grey">Feather Standards Track [Page 100]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-101" id="page-101" href="#page-101" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + local 16-bit character sets in article bodies, and still others have + gone for a combination of MIME [<a href="https://tools.ietf.org/html/rfc2045" title='"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"'>RFC2045</a>] and UTF-8. With the + increased use of MIME in email, it is becoming more common to find + NNTP articles containing MIME headers that identify the character set + of the body, but this is far from universal. + + The resulting confusion does not help interoperability. + + One point that has been generally accepted is that articles can + contain octets with the top bit set, and NNTP is only expected to + operate on 8-bit clean transport paths. + +<span class="h3"><h3><a class="selflink" name="section-10.2" href="#section-10.2">10.2</a>. This Specification</h3></span> + + Part of the role of this present specification is to eliminate this + confusion and promote interoperability as far as possible. At the + same time, it is necessary to accept the existence of the present + situation and not break existing implementations and arrangements + gratuitously, even if they are less than optimal. Therefore, the + current practice described above has been taken into consideration in + producing this specification. + + This specification extends NNTP from US-ASCII [<a href="#ref-ANSI1986" title='"Coded Character Set - 7-bit American Standard Code for Information Interchange"'>ANSI1986</a>] to UTF-8 + [<a href="https://tools.ietf.org/html/rfc3629" title='"UTF-8, a transformation format of ISO 10646"'>RFC3629</a>]. Except in the two areas discussed below, UTF-8 (which is + a superset of US-ASCII) is mandatory, and implementations MUST NOT + use any other encoding. + + Firstly, the use of MIME for article headers and bodies is strongly + recommended. However, given widely divergent existing practices, an + attempt to require a particular encoding and tagging standard would + be premature at this time. Accordingly, this specification allows + the use of arbitrary 8-bit data in articles subject to the following + requirements and recommendations. + + o The names of headers (e.g., "From" or "Subject") MUST be in + US-ASCII. + + o Header values SHOULD use US-ASCII or an encoding based on it, such + as <a href="https://tools.ietf.org/html/rfc2047">RFC 2047</a> [<a href="https://tools.ietf.org/html/rfc2047" title='"MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text"'>RFC2047</a>], until such time as another approach has + been standardised. At present, 8-bit encodings (including UTF-8) + SHOULD NOT be used because they are likely to cause + interoperability problems. + + o The character set of article bodies SHOULD be indicated in the + article headers, and this SHOULD be done in accordance with MIME. + + o Where an article is obtained from an external source, an + implementation MAY pass it on and derive data from it (such as the + + + +<span class="grey">Feather Standards Track [Page 101]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-102" id="page-102" href="#page-102" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + response to the HDR command), even though the article or the data + does not meet the above requirements. Implementations MUST + transfer such articles and data correctly and unchanged; they MUST + NOT attempt to convert or re-encode the article or derived data. + (Nevertheless, a client or server MAY elect not to post or forward + the article if, after further examination of the article, it deems + it inappropriate to do so.) + + This requirement affects the ARTICLE (<a href="#section-6.2.1">Section 6.2.1</a>), BODY + (<a href="#section-6.2.3">Section 6.2.3</a>), HDR (<a href="#section-8.5">Section 8.5</a>), HEAD (<a href="#section-6.2.2">Section 6.2.2</a>), IHAVE + (<a href="#section-6.3.2">Section 6.3.2</a>), OVER (<a href="#section-8.3">Section 8.3</a>), and POST (<a href="#section-6.3.1">Section 6.3.1</a>) + commands. + + Secondly, the following requirements are placed on the newsgroups + list returned by the LIST NEWSGROUPS command (<a href="#section-7.6.6">Section 7.6.6</a>): + + o Although this specification allows UTF-8 for newsgroup names, they + SHOULD be restricted to US-ASCII until a successor to <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a> + [<a href="https://tools.ietf.org/html/rfc1036" title='"Standard for interchange of USENET messages"'>RFC1036</a>] standardises another approach. 8-bit encodings SHOULD + NOT be used because they are likely to cause interoperability + problems. + + o The newsgroup description SHOULD be in US-ASCII or UTF-8 unless + and until a successor to <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a> standardises other encoding + arrangements. 8-bit encodings other than UTF-8 SHOULD NOT be used + because they are likely to cause interoperability problems. + + o Implementations that obtain this data from an external source MUST + handle it correctly even if it does not meet the above + requirements. Implementations (in particular, clients) MUST + handle such data correctly. + +<span class="h3"><h3><a class="selflink" name="section-10.3" href="#section-10.3">10.3</a>. Outstanding Issues</h3></span> + + While the primary use of NNTP is for transmitting articles that + conform to <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a> (Netnews articles), it is also used for other + formats (see <a href="#appendix-A">Appendix A</a>). It is therefore most appropriate that + internationalisation issues related to article formats be addressed + in the relevant specifications. For Netnews articles, this is any + successor to <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a>. For email messages, it is <a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a> [<a href="https://tools.ietf.org/html/rfc2822" title='"Internet Message Format"'>RFC2822</a>]. + + Of course, any article transmitted via NNTP needs to conform to this + specification as well. + + Restricting newsgroup names to UTF-8 is not a complete solution. In + particular, when new newsgroup names are created or a user is asked + to enter a newsgroup name, some scheme of canonicalisation will need + to take place. This specification does not attempt to define that + + + +<span class="grey">Feather Standards Track [Page 102]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-103" id="page-103" href="#page-103" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + canonicalization; further work is needed in this area, in conjunction + with the article format specifications. Until such specifications + are published, implementations SHOULD match newsgroup names octet by + octet. It is anticipated that any approved scheme will be applied + "at the edges", and therefore octet-by-octet comparison will continue + to apply to most, if not all, uses of newsgroup names in NNTP. + + In the meantime, any implementation experimenting with UTF-8 + newsgroup names is strongly cautioned that a future specification may + require that those names be canonicalized when used with NNTP in a + way that is not compatible with their experiments. + + Since the primary use of NNTP is with Netnews, and since newsgroup + descriptions are normally distributed through specially formatted + articles, it is recommended that the internationalisation issues + related to them be addressed in any successor to <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a>. + +<span class="h2"><h2><a class="selflink" name="section-11" href="#section-11">11</a>. IANA Considerations</h2></span> + + This specification requires IANA to keep a registry of capability + labels. The initial contents of this registry are specified in + <a href="#section-3.3.4">Section 3.3.4</a>. As described in <a href="#section-3.3.3">Section 3.3.3</a>, labels beginning with + X are reserved for private use, while all other names are expected to + be associated with a specification in an RFC on the standards track + or defining an IESG-approved experimental protocol. + + Different entries in the registry MUST use different capability + labels. + + Different entries in the registry MUST NOT use the same command name. + For this purpose, variants distinguished by a second or subsequent + keyword (e.g., "LIST HEADERS" and "LIST OVERVIEW.FMT") count as + different commands. If there is a need for two extensions to use the + same command, a single harmonised specification MUST be registered. + +<span class="h2"><h2><a class="selflink" name="section-12" href="#section-12">12</a>. Security Considerations</h2></span> + + This section is meant to inform application developers, information + providers, and users of the security limitations in NNTP as described + by this document. The discussion does not include definitive + solutions to the problems revealed, though it does make some + suggestions for reducing security risks. + + + + + + + + + +<span class="grey">Feather Standards Track [Page 103]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-104" id="page-104" href="#page-104" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h3"><h3><a class="selflink" name="section-12.1" href="#section-12.1">12.1</a>. Personal and Proprietary Information</h3></span> + + NNTP, because it was created to distribute network news articles, + will forward whatever information is stored in those articles. + Specification of that information is outside this scope of this + document, but it is likely that some personal and/or proprietary + information is available in some of those articles. It is very + important that designers and implementers provide informative + warnings to users so that personal and/or proprietary information in + material that is added automatically to articles (e.g., in headers) + is not disclosed inadvertently. Additionally, effective and easily + understood mechanisms to manage the distribution of news articles + SHOULD be provided to NNTP Server administrators, so that they are + able to report with confidence the likely spread of any particular + set of news articles. + +<span class="h3"><h3><a class="selflink" name="section-12.2" href="#section-12.2">12.2</a>. Abuse of Server Log Information</h3></span> + + A server is in the position to save session data about a user's + requests that might identify their reading patterns or subjects of + interest. This information is clearly confidential in nature, and + its handling can be constrained by law in certain countries. People + using this protocol to provide data are responsible for ensuring that + such material is not distributed without the permission of any + individuals that are identifiable by the published results. + +<span class="h3"><h3><a class="selflink" name="section-12.3" href="#section-12.3">12.3</a>. Weak Authentication and Access Control</h3></span> + + There is no user-based or token-based authentication in the basic + NNTP specification. Access is normally controlled by server + configuration files. Those files specify access by using domain + names or IP addresses. However, this specification does permit the + creation of extensions to NNTP for such purposes; one such extension + is [<a href="#ref-NNTP-AUTH" title='"Network News Transfer Protocol (NNTP) Extension for Authentication"'>NNTP-AUTH</a>]. While including such mechanisms is optional, doing + so is strongly encouraged. + + Other mechanisms are also available. For example, a proxy server + could be put in place that requires authentication before connecting + via the proxy to the NNTP server. + +<span class="h3"><h3><a class="selflink" name="section-12.4" href="#section-12.4">12.4</a>. DNS Spoofing</h3></span> + + Many existing NNTP implementations authorize incoming connections by + checking the IP address of that connection against the IP addresses + obtained via DNS lookups of lists of domain names given in local + configuration files. Servers that use this type of authentication + and clients that find a server by doing a DNS lookup of the server + name rely very heavily on the Domain Name Service, and are thus + + + +<span class="grey">Feather Standards Track [Page 104]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-105" id="page-105" href="#page-105" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + generally prone to security attacks based on the deliberate + misassociation of IP addresses and DNS names. Clients and servers + need to be cautious in assuming the continuing validity of an IP + number/DNS name association. + + In particular, NNTP clients and servers SHOULD rely on their name + resolver for confirmation of an IP number/DNS name association, + rather than cache the result of previous host name lookups. Many + platforms already can cache host name lookups locally when + appropriate, and they SHOULD be configured to do so. It is proper + for these lookups to be cached, however, only when the TTL (Time To + Live) information reported by the name server makes it likely that + the cached information will remain useful. + + If NNTP clients or servers cache the results of host name lookups in + order to achieve a performance improvement, they MUST observe the TTL + information reported by DNS. If NNTP clients or servers do not + observe this rule, they could be spoofed when a previously accessed + server's IP address changes. As network renumbering is expected to + become increasingly common, the possibility of this form of attack + will increase. Observing this requirement thus reduces this + potential security vulnerability. + + This requirement also improves the load-balancing behaviour of + clients for replicated servers using the same DNS name and reduces + the likelihood of a user's experiencing failure in accessing sites + that use that strategy. + +<span class="h3"><h3><a class="selflink" name="section-12.5" href="#section-12.5">12.5</a>. UTF-8 Issues</h3></span> + + UTF-8 [<a href="https://tools.ietf.org/html/rfc3629" title='"UTF-8, a transformation format of ISO 10646"'>RFC3629</a>] permits only certain sequences of octets and + designates others as either malformed or "illegal". The Unicode + standard identifies a number of security issues related to illegal + sequences and forbids their generation by conforming implementations. + + Implementations of this specification MUST NOT generate malformed or + illegal sequences and SHOULD detect them and take some appropriate + action. This could include the following: + + o Generating a 501 response code. + + o Replacing such sequences by the sequence %xEF.BF.BD, which encodes + the "replacement character" U+FFFD. + + o Closing the connection. + + o Replacing such sequences by a "guessed" valid sequence (based on + properties of the UTF-8 encoding). + + + +<span class="grey">Feather Standards Track [Page 105]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-106" id="page-106" href="#page-106" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + In the last case, the implementation MUST ensure that any replacement + cannot be used to bypass validity or security checks. For example, + the illegal sequence %xC0.A0 is an over-long encoding for space + (%x20). If it is replaced by the correct encoding in a command line, + this needs to happen before the command line is parsed into + individual arguments. If the replacement came after parsing, it + would be possible to generate an argument with an embedded space, + which is forbidden. Use of the "replacement character" does not have + this problem, since it is permitted wherever non-US-ASCII characters + are. Implementations SHOULD use one of the first two solutions where + the general structure of the NNTP stream remains intact and SHOULD + close the connection if it is no longer possible to parse it + sensibly. + +<span class="h3"><h3><a class="selflink" name="section-12.6" href="#section-12.6">12.6</a>. Caching of Capability Lists</h3></span> + + The CAPABILITIES command provides a capability list, which is + information about the current capabilities of the server. Whenever + there is a relevant change to the server state, the results of this + command are required to change accordingly. + + In most situations, the capabilities list in a given server state + will not change from session to session; for example, a given + extension will be installed permanently on a server. Some clients + may therefore wish to remember which extensions a server supports to + avoid the delay of an additional command and response, particularly + if they open multiple connections in the same session. + + However, information about extensions related to security and privacy + MUST NOT be cached, since this could allow a variety of attacks. + + For example, consider a server that permits the use of cleartext + passwords on links that are encrypted but not otherwise: + + [Initial connection set-up completed.] + [S] 200 NNTP Service Ready, posting permitted + [<a href="#ref-C" title='"Demo User"'>C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] NEWNEWS + [S] POST + [S] XENCRYPT + [S] LIST ACTIVE NEWSGROUPS + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] XENCRYPT + [Client and server negotiate encryption on the link] + [S] 283 Encrypted link established + + + +<span class="grey">Feather Standards Track [Page 106]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-107" id="page-107" href="#page-107" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + [<a name="ref-C" id="ref-C">C</a>] CAPABILITIES + [S] 101 Capability list: + [S] VERSION 2 + [S] READER + [S] NEWNEWS + [S] POST + [S] XSECRET + [S] LIST ACTIVE NEWSGROUPS + [S] . + [<a href="#ref-C" title='"Demo User"'>C</a>] XSECRET fred flintstone + [S] 290 Password for fred accepted + + If the client caches the last capabilities list, then on the next + session it will attempt to use XSECRET on an unencrypted link: + + [Initial connection set-up completed.] + [S] 200 NNTP Service Ready, posting permitted + [<a href="#ref-C" title='"Demo User"'>C</a>] XSECRET fred flintstone + [S] 483 Only permitted on secure links + + This exposes the password to any eavesdropper. While the primary + cause of this is passing a secret without first checking the security + of the link, caching of capability lists can increase the risk. + + Any security extension should include requirements to check the + security state of the link in a manner appropriate to that extension. + + Caching should normally only be considered for anonymous clients that + do not use any security or privacy extensions and for which the time + required for an additional command and response is a noticeable + issue. + +<span class="h2"><h2><a class="selflink" name="section-13" href="#section-13">13</a>. Acknowledgements</h2></span> + + This document is the result of much effort by the present and past + members of the NNTP Working Group, chaired by Russ Allbery and Ned + Freed. It could not have been produced without them. + + The author acknowledges the original authors of NNTP as documented in + <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> [<a href="https://tools.ietf.org/html/rfc977" title='"Network News Transfer Protocol"'>RFC977</a>]: Brian Kantor and Phil Lapsey. + + The author gratefully acknowledges the following: + + o The work of the NNTP committee chaired by Eliot Lear. The + organization of this document was influenced by the last available + version from this working group. A special thanks to Eliot for + generously providing the original machine-readable sources for + that document. + + + +<span class="grey">Feather Standards Track [Page 107]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-108" id="page-108" href="#page-108" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + o The work of the DRUMS working group, specifically <a href="https://tools.ietf.org/html/rfc1869">RFC 1869</a> + [<a href="https://tools.ietf.org/html/rfc1869" title='"SMTP Service Extensions"'>RFC1869</a>], that drove the original thinking that led to the + CAPABILITIES command and the extensions mechanism detailed in this + document. + + o The authors of <a href="https://tools.ietf.org/html/rfc2616">RFC 2616</a> [<a href="https://tools.ietf.org/html/rfc2616" title='"Hypertext Transfer Protocol -- HTTP/1.1"'>RFC2616</a>] for providing specific and + relevant examples of security issues that should be considered for + HTTP. Since many of the same considerations exist for NNTP, those + examples that are relevant have been included here with some minor + rewrites. + + o The comments and additional information provided by the following + individuals in preparing one or more of the progenitors of this + document: + + Russ Allbery <rra@stanford.edu> + Wayne Davison <davison@armory.com> + Chris Lewis <clewis@bnr.ca> + Tom Limoncelli <tal@mars.superlink.net> + Eric Schnoebelen <eric@egsner.cirr.com> + Rich Salz <rsalz@osf.org> + + This work was motivated by the work of various news reader authors + and news server authors, including those listed below: + + Rick Adams + Original author of the NNTP extensions to the RN news reader and + last maintainer of Bnews. + + Stan Barber + Original author of the NNTP extensions to the news readers that + are part of Bnews. + + Geoff Collyer + Original author of the OVERVIEW database proposal and one of the + original authors of CNEWS. + + Dan Curry + Original author of the xvnews news reader. + + Wayne Davison + Author of the first threading extensions to the RN news reader + (commonly called TRN). + + Geoff Huston + Original author of ANU NEWS. + + + + + +<span class="grey">Feather Standards Track [Page 108]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-109" id="page-109" href="#page-109" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Phil Lapsey + Original author of the UNIX reference implementation for NNTP. + + Iain Lea + Original maintainer of the TIN news reader. + + Chris Lewis + First known implementer of the AUTHINFO GENERIC extension. + + Rich Salz + Original author of INN. + + Henry Spencer + One of the original authors of CNEWS. + + Kim Storm + Original author of the NN news reader. + + Other people who contributed to this document include: + + Matthias Andree + Greg Andruk + Daniel Barclay + Maurizio Codogno + Mark Crispin + Andrew Gierth + Juergen Helbing + Scott Hollenbeck + Urs Janssen + Charles Lindsey + Ade Lovett + David Magda + Ken Murchison + Francois Petillon + Peter Robinson + Rob Siemborski + Howard Swinehart + Ruud van Tol + Jeffrey Vinocur + Erik Warmelink + + The author thanks them all and apologises to anyone omitted. + + Finally, the present author gratefully acknowledges the vast amount + of work put into previous versions by the previous author: + + Stan Barber <sob@academ.com> + + + + +<span class="grey">Feather Standards Track [Page 109]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-110" id="page-110" href="#page-110" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h2"><h2><a class="selflink" name="section-14" href="#section-14">14</a>. References</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-14.1" href="#section-14.1">14.1</a>. Normative References</h3></span> + + [<a name="ref-ANSI1986" id="ref-ANSI1986">ANSI1986</a>] American National Standards Institute, "Coded Character + Set - 7-bit American Standard Code for Information + Interchange", ANSI X3.4, 1986. + + [<a name="ref-RFC977" id="ref-RFC977">RFC977</a>] Kantor, B. and P. Lapsley, "Network News Transfer + Protocol", <a href="https://tools.ietf.org/html/rfc977">RFC 977</a>, February 1986. + + [<a name="ref-RFC2045" id="ref-RFC2045">RFC2045</a>] Freed, N. and N. Borenstein, "Multipurpose Internet + Mail Extensions (MIME) Part One: Format of Internet + Message Bodies", <a href="https://tools.ietf.org/html/rfc2045">RFC 2045</a>, November 1996. + + [<a name="ref-RFC2047" id="ref-RFC2047">RFC2047</a>] Moore, K., "MIME (Multipurpose Internet Mail + Extensions) Part Three: Message Header Extensions for + Non-ASCII Text", <a href="https://tools.ietf.org/html/rfc2047">RFC 2047</a>, November 1996. + + [<a name="ref-RFC2119" id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", <a href="https://tools.ietf.org/html/bcp14">BCP 14</a>, <a href="https://tools.ietf.org/html/rfc2119">RFC 2119</a>, March 1997. + + [<a name="ref-RFC3629" id="ref-RFC3629">RFC3629</a>] Yergeau, F., "UTF-8, a transformation format of ISO + 10646", STD 63, <a href="https://tools.ietf.org/html/rfc3629">RFC 3629</a>, November 2003. + + [<a name="ref-RFC4234" id="ref-RFC4234">RFC4234</a>] Crocker, D., Ed. and P. Overell, "Augmented BNF for + Syntax Specifications: ABNF", <a href="https://tools.ietf.org/html/rfc4234">RFC 4234</a>, October 2005. + + [<a name="ref-RFC4648" id="ref-RFC4648">RFC4648</a>] Josefsson, S., "The Base16, Base32, and Base64 Data + Encodings", <a href="https://tools.ietf.org/html/rfc4648">RFC 4648</a>, October 2006. + + [<a name="ref-TF.686-1" id="ref-TF.686-1">TF.686-1</a>] International Telecommunications Union - Radio, + "Glossary, ITU-R Recommendation TF.686-1", + ITU-R Recommendation TF.686-1, October 1997. + +<span class="h3"><h3><a class="selflink" name="section-14.2" href="#section-14.2">14.2</a>. Informative References</h3></span> + + [<a name="ref-NNTP-AUTH" id="ref-NNTP-AUTH">NNTP-AUTH</a>] Vinocur, J., Murchison, K., and C. Newman, "Network + News Transfer Protocol (NNTP) Extension for + Authentication", + <a href="https://tools.ietf.org/html/rfc4643">RFC 4643</a>, October 2006. + + [<a name="ref-NNTP-STREAM" id="ref-NNTP-STREAM">NNTP-STREAM</a>] Vinocur, J. and K. Murchison, "Network News Transfer + Protocol (NNTP) Extension for Streaming Feeds", + <a href="https://tools.ietf.org/html/rfc4644">RFC 4644</a>, October 2006. + + + + + + +<span class="grey">Feather Standards Track [Page 110]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-111" id="page-111" href="#page-111" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + [<a name="ref-NNTP-TLS" id="ref-NNTP-TLS">NNTP-TLS</a>] Murchison, K., Vinocur, J., and C. Newman, "Using + Transport Layer Security (TLS) with Network News + Transfer Protocol (NNTP)", <a href="https://tools.ietf.org/html/rfc4642">RFC 4642</a>, October 2006. + + [<a name="ref-RFC1036" id="ref-RFC1036">RFC1036</a>] Horton, M. and R. Adams, "Standard for interchange of + USENET messages", <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a>, December 1987. + + [<a name="ref-RFC1305" id="ref-RFC1305">RFC1305</a>] Mills, D., "Network Time Protocol (Version 3) + Specification, Implementation and Analysis", <a href="https://tools.ietf.org/html/rfc1305">RFC 1305</a>, + March 1992. + + [<a name="ref-RFC1869" id="ref-RFC1869">RFC1869</a>] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D. + Crocker, "SMTP Service Extensions", STD 10, <a href="https://tools.ietf.org/html/rfc1869">RFC 1869</a>, + November 1995. + + [<a name="ref-RFC2616" id="ref-RFC2616">RFC2616</a>] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext + Transfer Protocol -- HTTP/1.1", <a href="https://tools.ietf.org/html/rfc2616">RFC 2616</a>, June 1999. + + [<a name="ref-RFC2629" id="ref-RFC2629">RFC2629</a>] Rose, M., "Writing I-Ds and RFCs using XML", <a href="https://tools.ietf.org/html/rfc2629">RFC 2629</a>, + June 1999. + + [<a name="ref-RFC2822" id="ref-RFC2822">RFC2822</a>] Resnick, P., "Internet Message Format", <a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a>, April + 2001. + + [<a name="ref-RFC2980" id="ref-RFC2980">RFC2980</a>] Barber, S., "Common NNTP Extensions", <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a>, October + 2000. + + [<a name="ref-ROBE1995" id="ref-ROBE1995">ROBE1995</a>] Robertson, R., "FAQ: Overview database / NOV General + Information", January 1995. + + There is no definitive copy of this document known to + the author. It was previously posted as the Usenet + article <news:nov-faq-1-930909720@agate.Berkeley.EDU> + + [<a name="ref-SALZ1992" id="ref-SALZ1992">SALZ1992</a>] Salz, R., "Manual Page for wildmat(3) from the INN 1.4 + distribution, Revision 1.10", April 1992. + + There is no definitive copy of this document known to + the author. + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 111]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-112" id="page-112" href="#page-112" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-A" href="#appendix-A">Appendix A</a>. Interaction with Other Specifications</h2></span> + + NNTP is most often used for transferring articles that conform to + <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a> [<a href="https://tools.ietf.org/html/rfc1036" title='"Standard for interchange of USENET messages"'>RFC1036</a>] (such articles are called "Netnews articles" + here). It is also sometimes used for transferring email messages + that conform to <a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a> [<a href="https://tools.ietf.org/html/rfc2822" title='"Internet Message Format"'>RFC2822</a>] (such articles are called "email + articles" here). In this situation, articles must conform both to + this specification and to that other one; this appendix describes + some relevant issues. + +<span class="h1"><h1><a class="selflink" name="appendix-A.1" href="#appendix-A.1">A.1</a>. Header Folding</h1></span> + + NNTP allows a header line to be folded (by inserting a CRLF pair) + before any space or TAB character. + + Both email and Netnews articles are required to have at least one + octet other than space or TAB on each header line. Thus, folding can + only happen at one point in each sequence of consecutive spaces or + TABs. Netnews articles are further required to have the header name, + colon, and following space all on the first line; folding may only + happen beyond that space. Finally, some non-conforming software will + remove trailing spaces and TABs from a line. Therefore, it might be + inadvisable to fold a header after a space or TAB. + + For maximum safety, header lines SHOULD conform to the following + syntax rather than to that in <a href="#section-9.7">Section 9.7</a>. + + + header = header-name ":" SP [header-content] CRLF + header-content = [WS] token *( [CRLF] WS token ) + +<span class="h1"><h1><a class="selflink" name="appendix-A.2" href="#appendix-A.2">A.2</a>. Message-IDs</h1></span> + + Every article handled by an NNTP server MUST have a unique + message-id. For the purposes of this specification, a message-id is + an arbitrary opaque string that merely needs to meet certain + syntactic requirements and is just a way to refer to the article. + + Because there is a significant risk that old articles will be + reinjected into the global Usenet system, <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a> [<a href="https://tools.ietf.org/html/rfc1036" title='"Standard for interchange of USENET messages"'>RFC1036</a>] requires + that message-ids are globally unique for all time. + + This specification states that message-ids are the same if and only + if they consist of the same sequence of octets. Other specifications + may define two different sequences as being equal because they are + putting an interpretation on particular characters. <a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a> + [<a href="https://tools.ietf.org/html/rfc2822" title='"Internet Message Format"'>RFC2822</a>] has a concept of "quoted" and "escaped" characters. It + therefore considers the three message-ids: + + + +<span class="grey">Feather Standards Track [Page 112]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-113" id="page-113" href="#page-113" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + <ab.cd@example.com> + <"ab.cd"@example.com> + <"ab.\cd"@example.com> + + as being identical. Therefore, an NNTP implementation handing email + articles must ensure that only one of these three appears in the + protocol and that the other two are converted to it as and when + necessary, such as when a client checks the results of a NEWNEWS + command against an internal database of message-ids. Note that + <a href="https://tools.ietf.org/html/rfc1036">RFC 1036</a> [<a href="https://tools.ietf.org/html/rfc1036" title='"Standard for interchange of USENET messages"'>RFC1036</a>] never treats two different strings as being + identical. Its successor (as of the time of writing) restricts the + syntax of message-ids so that, whenever <a href="https://tools.ietf.org/html/rfc2822">RFC 2822</a> would treat two + strings as equivalent, only one of them is valid (in the above + example, only the first string is valid). + + This specification does not describe how the message-id of an article + is determined; it may be deduced from the contents of the article or + derived from some external source. If the server is also conforming + to another specification that contains a definition of message-id + compatible with this one, the server SHOULD use those message-ids. A + common approach, and one that SHOULD be used for email and Netnews + articles, is to extract the message-id from the contents of a header + with name "Message-ID". This may not be as simple as copying the + entire header contents; it may be necessary to strip off comments and + undo quoting, or to reduce "equivalent" message-ids to a canonical + form. + + If an article is obtained through the IHAVE command, there will be a + message-id provided with the command. The server MAY either use it + or determine one from the article contents. However, whichever it + does, it SHOULD ensure that, if the IHAVE command is repeated with + the same argument and article, it will be recognized as a duplicate. + + If an article does not contain a message-id that the server can + identify, it MUST synthesize one. This could, for example, be a + simple sequence number or be based on the date and time when the + article arrived. When email or Netnews articles are handled, a + Message-ID header SHOULD be added to ensure global consistency and + uniqueness. + + Note that, because the message-id might not have been derived from + the Message-ID header in the article, the following example is + legitimate (though unusual): + + + + + + + + +<span class="grey">Feather Standards Track [Page 113]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-114" id="page-114" href="#page-114" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + [<a name="ref-C" id="ref-C">C</a>] HEAD <45223423@example.com> + [S] 221 0 <45223423@example.com> + [S] Path: pathost!demo!whitehouse!not-for-mail + [S] Message-ID: <1234@example.net> + [S] From: "Demo User" <nobody@example.net> + [S] Newsgroups: misc.test + [S] Subject: I am just a test article + [S] Date: 6 Oct 1998 04:38:40 -0500 + [S] Organization: An Example Net, Uncertain, Texas + [S] . + +<span class="h1"><h1><a class="selflink" name="appendix-A.3" href="#appendix-A.3">A.3</a>. Article Posting</h1></span> + + As far as NNTP is concerned, the POST and IHAVE commands provide the + same basic facilities in a slightly different way. However, they + have rather different intentions. + + The IHAVE command is intended for transmitting conforming articles + between a system of NNTP servers, with all articles perhaps also + conforming to another specification (e.g., all articles are Netnews + articles). It is expected that the client will already have done any + necessary validation (or that it has in turn obtained the article + from a third party that has done so); therefore, the contents SHOULD + be left unchanged. + + In contrast, the POST command is intended for use when an end-user is + injecting a newly created article into a such a system. The article + being transferred might not be a conforming email or Netnews article, + and the server is expected to validate it and, if necessary, to + convert it to the right form for onward distribution. This is often + done by a separate piece of software on the server installation; if + so, the NNTP server SHOULD pass the incoming article to that software + unaltered, making no attempt to filter characters, to fold or limit + lines, or to process the incoming text otherwise. + + The POST command can fail in various ways, and clients should be + prepared to re-send an article. When doing so, however, it is often + important to ensure (as far as possible) that the same message-id is + allocated to both attempts so that the server, or other servers, can + recognize the two articles as duplicates. In the case of email or + Netnews articles, therefore, the posted article SHOULD contain a + header with the name "Message-ID", and the contents of this header + SHOULD be identical on each attempt. The server SHOULD ensure that + two POSTed articles with the same contents for this header are + recognized as identical and that the same message-id is allocated, + whether or not those contents are suitable for use as the message-id. + + + + + +<span class="grey">Feather Standards Track [Page 114]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-115" id="page-115" href="#page-115" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-B" href="#appendix-B">Appendix B</a>. Summary of Commands</h2></span> + + This section contains a list of every command defined in this + document, ordered by command name and by indicating capability. + + Ordered by command name: + + +-------------------+-----------------------+---------------+ + | Command | Indicating capability | Definition | + +-------------------+-----------------------+---------------+ + | ARTICLE | READER | <a href="#section-6.2.1">Section 6.2.1</a> | + | BODY | READER | <a href="#section-6.2.3">Section 6.2.3</a> | + | CAPABILITIES | mandatory | <a href="#section-5.2">Section 5.2</a> | + | DATE | READER | <a href="#section-7.1">Section 7.1</a> | + | GROUP | READER | <a href="#section-6.1.1">Section 6.1.1</a> | + | HDR | HDR | <a href="#section-8.5">Section 8.5</a> | + | HEAD | mandatory | <a href="#section-6.2.2">Section 6.2.2</a> | + | HELP | mandatory | <a href="#section-7.2">Section 7.2</a> | + | IHAVE | IHAVE | <a href="#section-6.3.2">Section 6.3.2</a> | + | LAST | READER | <a href="#section-6.1.3">Section 6.1.3</a> | + | LIST | LIST | <a href="#section-7.6.1">Section 7.6.1</a> | + | LIST ACTIVE.TIMES | LIST | <a href="#section-7.6.4">Section 7.6.4</a> | + | LIST ACTIVE | LIST | <a href="#section-7.6.3">Section 7.6.3</a> | + | LIST DISTRIB.PATS | LIST | <a href="#section-7.6.5">Section 7.6.5</a> | + | LIST HEADERS | HDR | <a href="#section-8.6">Section 8.6</a> | + | LIST NEWSGROUPS | LIST | <a href="#section-7.6.6">Section 7.6.6</a> | + | LIST OVERVIEW.FMT | OVER | <a href="#section-8.4">Section 8.4</a> | + | LISTGROUP | READER | <a href="#section-6.1.2">Section 6.1.2</a> | + | MODE READER | MODE-READER | <a href="#section-5.3">Section 5.3</a> | + | NEWGROUPS | READER | <a href="#section-7.3">Section 7.3</a> | + | NEWNEWS | NEWNEWS | <a href="#section-7.4">Section 7.4</a> | + | NEXT | READER | <a href="#section-6.1.4">Section 6.1.4</a> | + | OVER | OVER | <a href="#section-8.3">Section 8.3</a> | + | POST | POST | <a href="#section-6.3.1">Section 6.3.1</a> | + | QUIT | mandatory | <a href="#section-5.4">Section 5.4</a> | + | STAT | mandatory | <a href="#section-6.2.4">Section 6.2.4</a> | + +-------------------+-----------------------+---------------+ + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 115]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-116" id="page-116" href="#page-116" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Ordered by indicating capability: + + +-------------------+-----------------------+---------------+ + | Command | Indicating capability | Definition | + +-------------------+-----------------------+---------------+ + | CAPABILITIES | mandatory | <a href="#section-5.2">Section 5.2</a> | + | HEAD | mandatory | <a href="#section-6.2.2">Section 6.2.2</a> | + | HELP | mandatory | <a href="#section-7.2">Section 7.2</a> | + | QUIT | mandatory | <a href="#section-5.4">Section 5.4</a> | + | STAT | mandatory | <a href="#section-6.2.4">Section 6.2.4</a> | + | HDR | HDR | <a href="#section-8.5">Section 8.5</a> | + | LIST HEADERS | HDR | <a href="#section-8.6">Section 8.6</a> | + | IHAVE | IHAVE | <a href="#section-6.3.2">Section 6.3.2</a> | + | LIST | LIST | <a href="#section-7.6.1">Section 7.6.1</a> | + | LIST ACTIVE | LIST | <a href="#section-7.6.3">Section 7.6.3</a> | + | LIST ACTIVE.TIMES | LIST | <a href="#section-7.6.4">Section 7.6.4</a> | + | LIST DISTRIB.PATS | LIST | <a href="#section-7.6.5">Section 7.6.5</a> | + | LIST NEWSGROUPS | LIST | <a href="#section-7.6.6">Section 7.6.6</a> | + | MODE READER | MODE-READER | <a href="#section-5.3">Section 5.3</a> | + | NEWNEWS | NEWNEWS | <a href="#section-7.4">Section 7.4</a> | + | OVER | OVER | <a href="#section-8.3">Section 8.3</a> | + | LIST OVERVIEW.FMT | OVER | <a href="#section-8.4">Section 8.4</a> | + | POST | POST | <a href="#section-6.3.1">Section 6.3.1</a> | + | ARTICLE | READER | <a href="#section-6.2.1">Section 6.2.1</a> | + | BODY | READER | <a href="#section-6.2.3">Section 6.2.3</a> | + | DATE | READER | <a href="#section-7.1">Section 7.1</a> | + | GROUP | READER | <a href="#section-6.1.1">Section 6.1.1</a> | + | LAST | READER | <a href="#section-6.1.3">Section 6.1.3</a> | + | LISTGROUP | READER | <a href="#section-6.1.2">Section 6.1.2</a> | + | NEWGROUPS | READER | <a href="#section-7.3">Section 7.3</a> | + | NEXT | READER | <a href="#section-6.1.4">Section 6.1.4</a> | + +-------------------+-----------------------+---------------+ + + + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 116]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-117" id="page-117" href="#page-117" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-C" href="#appendix-C">Appendix C</a>. Summary of Response Codes</h2></span> + + This section contains a list of every response code defined in this + document and indicates whether it is multi-line, which commands can + generate it, what arguments it has, and what its meaning is. + + Response code 100 (multi-line) + Generated by: HELP + Meaning: help text follows. + + Response code 101 (multi-line) + Generated by: CAPABILITIES + Meaning: capabilities list follows. + + Response code 111 + Generated by: DATE + 1 argument: yyyymmddhhmmss + Meaning: server date and time. + + Response code 200 + Generated by: initial connection, MODE READER + Meaning: service available, posting allowed. + + Response code 201 + Generated by: initial connection, MODE READER + Meaning: service available, posting prohibited. + + Response code 205 + Generated by: QUIT + Meaning: connection closing (the server immediately closes the + connection). + + Response code 211 + The 211 response code has two completely different forms, + depending on which command generated it: + + (not multi-line) + Generated by: GROUP + 4 arguments: number low high group + Meaning: group selected. + + (multi-line) + Generated by: LISTGROUP + 4 arguments: number low high group + Meaning: article numbers follow. + + + + + + +<span class="grey">Feather Standards Track [Page 117]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-118" id="page-118" href="#page-118" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Response code 215 (multi-line) + Generated by: LIST + Meaning: information follows. + + Response code 220 (multi-line) + Generated by: ARTICLE + 2 arguments: n message-id + Meaning: article follows. + + Response code 221 (multi-line) + Generated by: HEAD + 2 arguments: n message-id + Meaning: article headers follow. + + Response code 222 (multi-line) + Generated by: BODY + 2 arguments: n message-id + Meaning: article body follows. + + Response code 223 + Generated by: LAST, NEXT, STAT + 2 arguments: n message-id + Meaning: article exists and selected. + + Response code 224 (multi-line) + Generated by: OVER + Meaning: overview information follows. + + Response code 225 (multi-line) + Generated by: HDR + Meaning: headers follow. + + Response code 230 (multi-line) + Generated by: NEWNEWS + Meaning: list of new articles follows. + + Response code 231 (multi-line) + Generated by: NEWGROUPS + Meaning: list of new newsgroups follows. + + Response code 235 + Generated by: IHAVE (second stage) + Meaning: article transferred OK. + + Response code 240 + Generated by: POST (second stage) + Meaning: article received OK. + + + + +<span class="grey">Feather Standards Track [Page 118]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-119" id="page-119" href="#page-119" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Response code 335 + Generated by: IHAVE (first stage) + Meaning: send article to be transferred. + + Response code 340 + Generated by: POST (first stage) + Meaning: send article to be posted. + + Response code 400 + Generic response and generated by initial connection + Meaning: service not available or no longer available (the server + immediately closes the connection). + + Response code 401 + Generic response + 1 argument: capability-label + Meaning: the server is in the wrong mode; the indicated capability + should be used to change the mode. + + Response code 403 + Generic response + Meaning: internal fault or problem preventing action being taken. + + Response code 411 + Generated by: GROUP, LISTGROUP + Meaning: no such newsgroup. + + Response code 412 + Generated by: ARTICLE, BODY, GROUP, HDR, HEAD, LAST, LISTGROUP, + NEXT, OVER, STAT + Meaning: no newsgroup selected. + + Response code 420 + Generated by: ARTICLE, BODY, HDR, HEAD, LAST, NEXT, OVER, STAT + Meaning: current article number is invalid. + + Response code 421 + Generated by: NEXT + Meaning: no next article in this group. + + Response code 422 + Generated by: LAST + Meaning: no previous article in this group. + + Response code 423 + Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT + Meaning: no article with that number or in that range. + + + + +<span class="grey">Feather Standards Track [Page 119]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-120" id="page-120" href="#page-120" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Response code 430 + Generated by: ARTICLE, BODY, HDR, HEAD, OVER, STAT + Meaning: no article with that message-id. + + Response code 435 + Generated by: IHAVE (first stage) + Meaning: article not wanted. + + Response code 436 + Generated by: IHAVE (either stage) + Meaning: transfer not possible (first stage) or failed (second + stage); try again later. + + Response code 437 + Generated by: IHAVE (second stage) + Meaning: transfer rejected; do not retry. + + Response code 440 + Generated by: POST (first stage) + Meaning: posting not permitted. + + Response code 441 + Generated by: POST (second stage) + Meaning: posting failed. + + Response code 480 + Generic response + Meaning: command unavailable until the client has authenticated + itself. + + Response code 483 + Generic response + Meaning: command unavailable until suitable privacy has been + arranged. + + Response code 500 + Generic response + Meaning: unknown command. + + Response code 501 + Generic response + Meaning: syntax error in command. + + + + + + + + + +<span class="grey">Feather Standards Track [Page 120]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-121" id="page-121" href="#page-121" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + Response code 502 + Generic response and generated by initial connection + + Meaning for the initial connection and the MODE READER command: + service permanently unavailable (the server immediately closes the + connection). + + Meaning for all other commands: command not permitted (and there + is no way for the client to change this). + + Response code 503 + Generic response + Meaning: feature not supported. + + Response code 504 + Generic response + Meaning: error in base64-encoding [<a href="https://tools.ietf.org/html/rfc4648" title='"The Base16, Base32, and Base64 Data Encodings"'>RFC4648</a>] of an argument. + +<span class="h2"><h2><a class="selflink" name="appendix-D" href="#appendix-D">Appendix D</a>. Changes from <a href="https://tools.ietf.org/html/rfc977">RFC 977</a></h2></span> + + In general every attempt has been made to ensure that the protocol + specification in this document is compatible with the version + specified in <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> [<a href="https://tools.ietf.org/html/rfc977" title='"Network News Transfer Protocol"'>RFC977</a>] and the various facilities adopted from + <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a> [<a href="https://tools.ietf.org/html/rfc2980" title='"Common NNTP Extensions"'>RFC2980</a>]. However, there have been a number of changes, + some compatible and some not. + + This appendix lists these changes. It is not guaranteed to be + exhaustive or correct and MUST NOT be relied on. + + o A formal syntax specification (<a href="#section-9">Section 9</a>) has been added. + + o The default character set is changed from US-ASCII [<a href="#ref-ANSI1986" title='"Coded Character Set - 7-bit American Standard Code for Information Interchange"'>ANSI1986</a>] to + UTF-8 [<a href="https://tools.ietf.org/html/rfc3629" title='"UTF-8, a transformation format of ISO 10646"'>RFC3629</a>] (note that US-ASCII is a subset of UTF-8). This + matter is discussed further in <a href="#section-10">Section 10</a>. + + o All articles are required to have a message-id, eliminating the + "<0>" placeholder used in <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> in some responses. + + o The newsgroup name matching capabilities already documented in + <a href="https://tools.ietf.org/html/rfc977">RFC 977</a> ("wildmats", <a href="#section-4">Section 4</a>) are clarified and extended. The + new facilities (e.g., the use of commas and exclamation marks) are + allowed wherever wildmats appear in the protocol. + + o Support for pipelining of commands (<a href="#section-3.5">Section 3.5</a>) is made + mandatory. + + + + + + +<span class="grey">Feather Standards Track [Page 121]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-122" id="page-122" href="#page-122" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + o The principles behind response codes (<a href="#section-3.2">Section 3.2</a>) have been + tidied up. In particular: + + * the x8x response code family, formerly used for private + extensions, is now reserved for authentication and privacy + extensions; + + * the x9x response code family, formerly intended for debugging + facilities, are now reserved for private extensions; + + * the 502 and 503 generic response codes (<a href="#section-3.2.1">Section 3.2.1</a>) have + been redefined; + + * new 401, 403, 480, 483, and 504 generic response codes have + been added. + + o The rules for article numbering (<a href="#section-6">Section 6</a>) have been clarified + (also see <a href="#section-6.1.1.2">Section 6.1.1.2</a>). + + o The SLAVE command (which was ill-defined) is removed from the + protocol. + + o Four-digit years are permitted in the NEWNEWS (<a href="#section-7.4">Section 7.4</a>) and + NEWGROUPS (<a href="#section-7.3">Section 7.3</a>) commands (two-digit years are still + permitted). The optional distribution parameter to these commands + has been removed. + + o The LIST command (<a href="#section-7.6.1">Section 7.6.1</a>) is greatly extended; the original + is available as LIST ACTIVE, while new variants include + ACTIVE.TIMES, DISTRIB.PATS, and NEWSGROUPS. A new "m" status flag + is added to the LIST ACTIVE response. + + o A new CAPABILITIES command (<a href="#section-5.2">Section 5.2</a>) allows clients to + determine what facilities are supported by a server. + + o The DATE command (<a href="#section-7.1">Section 7.1</a>) is adopted from <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a> + effectively unchanged. + + o The LISTGROUP command (<a href="#section-6.1.2">Section 6.1.2</a>) is adopted from <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a>. + An optional range argument has been added, and the 211 initial + response line now has the same format as the 211 response from the + GROUP command. + + o The MODE READER command (<a href="#section-5.3">Section 5.3</a>) is adopted from <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a> and + its meaning and effects clarified. + + o The XHDR command in <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a> has been formalised as the new HDR + (<a href="#section-8.5">Section 8.5</a>) and LIST HEADERS (<a href="#section-8.6">Section 8.6</a>) commands. + + + +<span class="grey">Feather Standards Track [Page 122]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-123" id="page-123" href="#page-123" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + + o The XOVER command in <a href="https://tools.ietf.org/html/rfc2980">RFC 2980</a> has been formalised as the new OVER + (<a href="#section-8.3">Section 8.3</a>) and LIST OVERVIEW.FMT (<a href="#section-8.4">Section 8.4</a>) commands. The + former can be applied to a message-id as well as to a range. + + o The concept of article metadata (<a href="#section-8.1">Section 8.1</a>) has been formalised, + allowing the Bytes and Lines pseudo-headers to be deprecated. + + Client authors should note in particular that lack of support for the + CAPABILITIES command is a good indication that the server does not + support this specification. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 123]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-124" id="page-124" href="#page-124" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +Author's Address + + Clive D.W. Feather + THUS plc + 322 Regents Park Road + London + N3 2QQ + United Kingdom + + Phone: +44 20 8495 6138 + Fax: +44 870 051 9937 + EMail: clive@demon.net + URI: <a href="http://www.davros.org/">http://www.davros.org/</a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Feather Standards Track [Page 124]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-125" id="page-125" href="#page-125" class="invisible"> </a> +<span class="grey"><a href="#">RFC 3977</a> Network News Transfer Protocol (NNTP) October 2006</span> + + +Full Copyright Statement + +Copyright (C) The Internet Society (2006). + + This document is subject to the rights, licenses and restrictions + contained in <a href="https://tools.ietf.org/html/bcp78">BCP 78</a>, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in <a href="https://tools.ietf.org/html/bcp78">BCP 78</a> and <a href="https://tools.ietf.org/html/bcp79">BCP 79</a>. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + <a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at ietf- + ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is provided by the IETF + Administrative Support Activity (IASA). + + + + + + + +Feather Standards Track [Page 125] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.109, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/docs/djb-envelope.html b/docs/djb-envelope.html new file mode 100644 index 0000000..e6e4bcf --- /dev/null +++ b/docs/djb-envelope.html @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<html><head> +<meta http-equiv="content-type" content="text/html; charset=windows-1252"></head><body> +<a href="http://cr.yp.to/djb.html">D. J. Bernstein</a> +<br><a href="http://cr.yp.to/mail.html">Internet mail</a> +<br><a href="http://cr.yp.to/immhf.html">Internet mail message header format</a> +<h1>Envelope information: Return-Path, Received</h1> +<h2><a name="return-path"></a>Return-Path</h2> +The value of a Return-Path field is +<a href="http://cr.yp.to/immhf/token.html">tokenizable</a>. +It shows the return path of the message, +i.e., the address that +<a href="http://cr.yp.to/im/responsibility.html">bounces</a> will be sent to. +It is either +(1) a <tt><</tt> token followed by a <tt>></tt> token, +indicating an empty return path, or +(2) +a <a href="http://cr.yp.to/immhf/addrlist.html#bracketed">bracketed address</a>. +Two examples: +<pre> Return-Path: <> + Return-Path: <God@heaven.af.mil> +</pre> +<p> +Messages transmitted through +<a href="http://cr.yp.to/smtp.html">SMTP</a> generally do not have Return-Path fields; +the return path is transmitted out-of-band +in the SMTP MAIL request. +When a message is stored in a mailbox, +the return path is stored in a Return-Path field. +If the message is then retrieved (e.g., through POP) +and sent through another SMTP hop, +the Return-Path is removed and the return path is again sent out-of-band. +</p><p> +Some mailers, +in violation of RFC 1123, fail to record the return path of a message. +Subsequent bounces +are sent to an invented return path, +typically the header From address. +This behavior is a disaster for mailing-list messages, +where the correct return path is the mailing list manager, +and the From address is an innocent subscriber +who has no way to remove bad addresses from the mailing list. +Every mailer is +<a href="http://cr.yp.to/im/responsibility.html">responsible</a> +for using the correct return path. +</p><h2><a name="received"></a>Received</h2> +In theory, the value of a Received field is +<a href="http://cr.yp.to/immhf/token.html">tokenizable</a>. +It contains +<ol> +<li>optionally, a <tt>"from"</tt> atom followed by an +<a href="http://cr.yp.to/immhf/addrlist.html#encoded-domain">encoded domain name</a>; +</li><li>optionally, a <tt>"by"</tt> atom followed by an encoded domain name; +</li><li>optionally, a <tt>"via"</tt> atom followed by another atom; +</li><li>zero or more of the following: a "with" atom followed by another atom; +</li><li>optionally, an <tt>"id"</tt> atom followed by either (1) an atom +or (2) a <tt><</tt> token, an +<a href="http://cr.yp.to/immhf/addrlist.html#encoded-address">encoded address</a>, +and a <tt>></tt> token; +</li><li>optionally, a <tt>"for"</tt> atom followed by an encoded address; +</li><li>a semicolon; and +</li><li>a +<a href="http://cr.yp.to/immhf/date.html#timestamp">timestamp</a>. +</li></ol> +Each SMTP server +adds a Received field to the top of each incoming message, +giving details of how it received the message, +most importantly the client's IP address: +<pre> Received: from mail-relay.af.mil (127.193.178.241) + by silverton.berkeley.edu with SMTP; 4 May 1998 14:57:55 -0000 + Received: (qmail 2227 invoked from network); 4 May 1998 14:57:37 -0000 + Received: from heaven.af.mil (127.193.178.247) + by mail-relay.af.mil with SMTP; 4 May 1998 14:57:37 -0000 +</pre> +In practice, +SMTP servers put all sorts of badly formatted information into Received lines. +It is probably best for readers +to treat everything before the final semicolon as unstructured text, +purely for human consumption. +<p> +A few SMTP servers don't even format the date correctly. +For example: +</p><pre> Received: by MicroMailer 3.50a on Wednesday, 24 January 1996, 17:15:16 EST + (WRONG) +</pre> +Invalid Received fields are also produced by the cucipop POP server. +<h2><a name="hop-counting"></a>Hop counting</h2> +Most SMTP servers refuse messages with ``too many'' Received fields. +For example, sendmail is typically configured to refuse messages +with more than 25 Received fields. +qmail refuses messages with more than 100 Received or Delivered-To fields. +Some messages legitimately have 20 or more Received fields. +<p> +Hop counting is a last-resort method of preventing loops: +a message will bounce if it passes through too many SMTP servers. + + +</p></body></html>
\ No newline at end of file |