SlideShare a Scribd company logo
What's in an Email Address? 
RFC2822 Em@il @ddresses for Mere Mortals 
Schalk W. Cronjé 
@ysb33r
Why This Topic? 
● Recurring bugs in software we build 
● Lack of understanding at all levels 
– Developers 
– Testers 
– Support People 
● Assumptions made, without reading RFCs 
● Understanding RFCs are not straightforward 
– RTFM is difficult when TFM cannot be found 
● We require a basic reference
Content 
● Overview 
● Local-part 
● Domain-part 
● Valid or not? 
● The real world
Brave, brave RFC World 
RRFFCC22882211 RRFFCC11003344 
RRFFCC11003355 
RRFFCC22882222 
RRFFCC882211 
RRFFCC882222 
Domain name specification. 
Restrictions on email 
addresses at protocol levels. 
Specifies layout of email 
transmitted over internet. 
Specifies format of email 
address. 
RRFFCC22004477 
Encoding of 8-bit in 
RFC2822 header 
fields 
RRFFCC33449900 
Encoding international 
domain names 
RRFFCC11112233 
((PPaarrttiiaallllyy uuppddaatteedd bbyy RRFFCC22882211)) 
Requirements for internet hosts
Address Format 
Modern format 
local-part @ domain-part 
Historic format (RFC821/RFC2821) 
source-route : local-part @ domain-part
RFC2822 Local Parts 
● Unrestricted characters 
0..9 a..z A..Z ! # $ % & ' * + - / = ? ^ _ ` | { } ~ . 
● Quotable charactersq u( oted by “ ) 
< [ ( : @ ; ) ] > , non-ws-ctrl 
● Illegal characters 
All 8-bit. 
● Whitespace 
ws-ctrl illegal, only used for folding in headers 
space character is valid if quoted 
[ RFC2821: 4.1.2; RFC2822: 3.2, 3.4 ]
Local Payload 
● Routing characters 
– ! % have been used for local-routing in legacy 
systems, including UUCP and MHS. 
– Can be used to bypass routing in mis-configured 
systems. 
● Shell exploits 
– | / ` $ have been used to attempt remote 
command execution
Does Case Matter? 
● Case is ignored in domain 
ntaba.biz == ntaba.biz 
● Strictly-speaking case matters in local-parts 
schalk@ntaba.biz != ScHaLk@ntaba.biz 
– Most MTAs ignore case 
– RFC2821 discourages use of case as a 
distinguishing factor 
[ RFC2821: 2.4 ]
Does Size Matter? 
● RFC2821 places limitations on length of local-part and 
domain-part 
– 64 characters for local-part 
– 255 characters for domain-part 
● This is normally not a problem for messages 
transmitted across the internet, but can be problematic 
for in-house applications or encoded email addresses 
such as X.400. 
● Many MTAs will now ignore this length restriction as 
long as the overall SMTP protocol line length restriction 
is not exceeded. 
[ RFC2821: 4.5.3.1 ]
Domain Parts 
● Can either be a RFC1035 domain or an address literal 
● Valid characters for domain names: 
a..z A..Z 0..9 - 
● Subdomains separated by dot character. 
● Subdomain may not start or end with dash. 
● 255 characters max length. 
● 63 characters max per subdomain. 
● Cannot start or end in dot. 
● Restriction of subdomain starting with digit have been 
relaxed.
Address Literals 
● Workarounds for when host names cannot 
be resolved. 
– @[protocol:host-address] 
– IPv4: @[192.1.1.1] 
– IPv6: @[IPv6:fe80::a00:20ff:fec2:2ef4] 
● Protocol must be registered with ICANN. 
[ RFC2821: 4.1.3 ]
International Domain Names 
● Domain names not representable in US-ASCII 
can be registered 
● Such domain names cannot be handles by 
DNS or existing protocols 
● RFC 3490 describes the encoding/decoding 
of such domain names from presentation to 
protocol: 
exämple.com => xn--example-cua.com 
● Potential for phising
Valid or not? 
schalk_cronje@ntaba.biz 
● Valid even under strict RFC2822 
interpretation 
● Most punctuation are valid in local part, 
including: 
{$cha?k*cr%nje}@ntaba.biz
Valid or not? 
schalk_cronje@[192.168.1.1] 
● Yes, the domain part is an address-literal 
● Acceptance of address-literals should be 
configurable 
– They can be security risks 
– RFC2821 prefers usage of MX-based deliveries.
Valid or not? 
schalk_cronje@192.168.1.1 
● No, it is not an address-literal nor a valid 
domain name. 
● Some systems will attempt to deliver this by 
passing the 192.168.1.1 to the domain 
resolving subsystem, which in return will 
simply return the IP address. 
– This violates RFC1123 
– This is a potential security risk. 
[ RFC1123: 2.1 ]
Valid or not? 
schalk_cronje@1967.com 
● Not valid according to RFC1035 
● Limitation lifted in RFC1123. 
[ RFC1123: 2.1 ]
Valid or not? 
schalk_cronje@#192168 
● Valid in RFC821 for compatibility with 
non-TCP/IP networks. 
● Outlawed by RFC2821. 
● Not supported by any modern MTA. 
[ RFC821: 4.1.2; RFC2821: F.4 ]
Valid or not? 
schalk_cronje@.ntaba.biz 
● No, domain-part may not start with a dot. 
[ RFC2822: 3.2.4 ]
Valid or not? 
schalk_cronje@ntaba.biz. 
● No, strictly RFC2822 states that domain-part 
may not end with a dot. 
● RFC1034 use the dot-ending to indicate 
absolute domains (FQDN) in resource 
records. 
● Most systems will accept, resolve and deliver 
this 
[ RFC2822: 3.2.4; RFC1034: 3.1]
Valid or not? 
schalk_cronje@ntaba..biz. 
● No, consecutive dots are not allowed in 
domain parts. 
[ RFC2822: 3.2.4; RFC1034: 3.1]
Valid or not? 
● No. 
.schalk_cronje@ntaba.biz 
schalk..cronje@ntaba.biz 
– Local-parts may not start with a dot. 
– Consecutive dots are not allowed in local parts. 
● Pragmatically, many known MTAs don’t care 
[ RFC2822: 3.2.4]
Valid or not? 
schalk_cronje@lon_eng.ntaba.biz 
● No, _ is not valid in domain names 
● Some DNS servers will support this. 
● Some sites do use th_e for internal systems. 
● It remains illegal for internet operations 
[ RFC2821: 4.1.3 ]
Valid or not? 
schalk_cronje@lon_eng@ntaba.biz 
● No, @ cannot be used unquoted in local 
parts 
“schalk_cronje@lon_eng”@ntaba.biz 
schalk_cronje@lon_eng@ntaba.biz 
[ RFC2822: 3.2.5, 3.4 ]
Local-part Quoting 
● Quoting should only be used where 
absolutely necessary 
● Where a quoted-form have an unquoted 
form... 
– The two forms are equivalent 
– The unquoted form should be used for 
transmission 
● Quoting is performed by enclosing local-part 
in quotes or preceding a character by 
backslash. 
[ RFC2821: 4.1.2 ]
Valid or not? 
<schalk_cronje@ntaba.biz> 
● No, this is an envelope for email addresses 
● The following is valid: 
“<schalk_cronje>”@ntaba.biz
Valid or not? 
schalk_O”cronje@ntaba.biz 
● No, the double quote is a quoting character.
Valid or not? 
schalk_O'cronje@ntaba.biz 
● Yes, apostrophe is valid in unquoted form
Valid or not? 
“schalk_O”cronje”@ntaba.biz 
● This is debatable 
● Neither RFC2821, nor RFC2822, is 
completely clear whether the double quote is 
valid if escaped 
Note that the backslash, "", is a quote character, which is 
used to indicate that the next character is to be used literally 
[ RFC2821: 4.1.2 ]
Valid or not? 
schalk_cronjé@ntaba.biz 
● Not at RFC2821/RFC2822 levels - contains 
at one least 8-bit character 
● Can be completely valid at the presentation 
level 
– Email client can take care of translation between 
a user-readable form and a level suitable for 
transmission 
● There is NO agreed standard for encoding 
non-US-ASCII in local parts
My 8-bit's Worth 
● Custom encoding is valid, when both the sender and 
receiver will know about the encoding 
– Intermediate relays will simply pass it through 
● UTF-7: 
schalk+AF8-cronj+AOk@ntaba.biz 
● RFC2047 (adapted): 
=?UTF-8?Q?schalk_cronj=C3=A9?=@ntaba.biz 
● Storing email addresses with 8-bit content in XML is 
problematic – requires encoding.
The 8-bit Legacy 
● RFC822 was written in a 7-bit world 
– It can be misinterpreted as to 8-bit being legal. 
● Some MTAs will actually transmit 8-bit 
characters in email addresses 
● In-house systems might have a requirement 
for 8-bit 
● An email must be able to allow, block, 
quarantine or filter on 8-bit characters.
Valid or not? 
"`echo haX0r | /usr/bin/passwd root --stdin`"@ntaba.biz 
● Valid even under strict RFC2822 
interpretation 
● Quoting allows for spaces and | to be used 
● Imagine if this was passed to a shell script in 
a badly configured system!
Valid or not? 
"@lon-eng,@scm-eng:schalk_cronje"@ntaba.biz 
● Valid even under strict RFC2822 
interpretation 
● Quoting allows fo@r :, to be used
Valid or not? 
@lon-eng,@scm-eng:schalk_cronje@ntaba.biz 
● Valid even under strict RFC2822 
interpretation 
● This is an example of a source-route. 
● Usage is deprecated 
● It is best to remove them, before relaying. 
[ RFC2821: 3.7, C, F.2 ]
Practical Validation 
● Address validation cannot purely be 
performed against the RFC 
● Context is very important 
● Validation at user-level will differ from that at 
protocol-level. 
RFC rule of thum: bBe as lenient as possible 
in what you accept, but as strict as possible 
in what you send out.
Validation Context 
● Context places additional demands on 
validation algorithms 
● Validation algorithms must be configurable 
– Allows for specifics in user environments 
– Allows for adaptability within various code 
subsystems
Pattern Matching 
● DOS-patterns (*?) is useful, but not good 
enough 
● Regex is a better way to perform complex 
pattern matches 
– Not all users understand regex 
– It is therefore good to give users the option of an 
input notation, but use regex internally to perform 
the matching
The *? Problem 
schalk*cronje@ntaba.biz 
● The above is a valid email address 
● Was the intention to filter for this exact 
address? 
● Or was the intention to filter for addresses 
such as 
schalkRfcDudecronje@ntaba.biz 
● Regex: 
– schalk*cronje@ntaba.biz 
– schalk.*cronje@ntaba.biz
Lists of Addresses 
● RFC2822 uses the comma for separating 
address lists in headers 
● A common misnomer is that it is easy to 
delimit addresses usin;g o r ,. 
● Although it is possible, it is no trivial task to 
parse lists such as 
schalk@ntaba.biz, “s,c,h,a,l,k”@ntaba.biz 
,s,cha,lk@ntaba.biz , “sch”,alk”@ntaba.biz
Real World Violations 
● Use of _ in domain-part 
● Domain part starts with dot 
● Domain part ends in dot 
● 4000 characters in local part 
● 8-bit characters in local-part
What can we do? 
● Developers should never make any 
assumptions as to what the customer might 
need or to what the customer's infrastructure 
might be 
– Code to be as RFC-compliant as possible, but 
allow for configurability as and when needed. 
– User interfaces should be context-sensitive. 
● Testers should ensure that nobody makes 
such assumptions
Handling email addresses is an extraodinary 
complex matter for something very simple. 
Next time you enter an email address... 
...you might not want to take it for granted 
Questions ?

More Related Content

What's hot

BGP Overview
BGP OverviewBGP Overview
BGP Overview
Matt Bynum
 
Simple chat room using python
Simple chat room using pythonSimple chat room using python
Simple chat room using python
VISHAL VERMA
 
Network Socket Programming with JAVA
Network Socket Programming with JAVANetwork Socket Programming with JAVA
Network Socket Programming with JAVA
Dudy Ali
 
Programming the Network Data Plane
Programming the Network Data PlaneProgramming the Network Data Plane
Programming the Network Data Plane
C4Media
 
Hardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & ClassificationHardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & Classification
Jignesh Patel
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
Tushar B Kute
 
gRPC or Rest, why not both?
gRPC or Rest, why not both?gRPC or Rest, why not both?
gRPC or Rest, why not both?
Mohammad Murad
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
Open Networking Summits
 
Socket Programming
Socket ProgrammingSocket Programming
Socket Programming
CEC Landran
 
Space Communication Protocol-By Nilesh,Pravin
Space Communication Protocol-By Nilesh,PravinSpace Communication Protocol-By Nilesh,Pravin
Space Communication Protocol-By Nilesh,Pravin
NileshAawale
 
Chapter 4 - Computer Networking a top-down Approach 7th
Chapter 4 - Computer Networking a top-down Approach 7thChapter 4 - Computer Networking a top-down Approach 7th
Chapter 4 - Computer Networking a top-down Approach 7th
Andy Juan Sarango Veliz
 
0-RTT TCP converters
0-RTT TCP converters0-RTT TCP converters
0-RTT TCP converters
Olivier Bonaventure
 
Mis4200notes8 2
Mis4200notes8 2Mis4200notes8 2
Mis4200notes8 2
Ankit Dubey
 
Ch 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architectureCh 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architecture
Yoram Orzach
 
Troubleshooting BGP
Troubleshooting BGPTroubleshooting BGP
Troubleshooting BGP
APNIC
 
Network Programming in Java
Network Programming in JavaNetwork Programming in Java
Network Programming in Java
Tushar B Kute
 
TFTP
TFTPTFTP
Networking in Java
Networking in JavaNetworking in Java
Networking in Java
Tushar B Kute
 
Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...
Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...
Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...telestax
 
Openflow Protocol
Openflow ProtocolOpenflow Protocol
Openflow Protocol
Kaliyaperumal Krishnan
 

What's hot (20)

BGP Overview
BGP OverviewBGP Overview
BGP Overview
 
Simple chat room using python
Simple chat room using pythonSimple chat room using python
Simple chat room using python
 
Network Socket Programming with JAVA
Network Socket Programming with JAVANetwork Socket Programming with JAVA
Network Socket Programming with JAVA
 
Programming the Network Data Plane
Programming the Network Data PlaneProgramming the Network Data Plane
Programming the Network Data Plane
 
Hardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & ClassificationHardware Approaches for Fast Lookup & Classification
Hardware Approaches for Fast Lookup & Classification
 
Network programming in Java
Network programming in JavaNetwork programming in Java
Network programming in Java
 
gRPC or Rest, why not both?
gRPC or Rest, why not both?gRPC or Rest, why not both?
gRPC or Rest, why not both?
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
 
Socket Programming
Socket ProgrammingSocket Programming
Socket Programming
 
Space Communication Protocol-By Nilesh,Pravin
Space Communication Protocol-By Nilesh,PravinSpace Communication Protocol-By Nilesh,Pravin
Space Communication Protocol-By Nilesh,Pravin
 
Chapter 4 - Computer Networking a top-down Approach 7th
Chapter 4 - Computer Networking a top-down Approach 7thChapter 4 - Computer Networking a top-down Approach 7th
Chapter 4 - Computer Networking a top-down Approach 7th
 
0-RTT TCP converters
0-RTT TCP converters0-RTT TCP converters
0-RTT TCP converters
 
Mis4200notes8 2
Mis4200notes8 2Mis4200notes8 2
Mis4200notes8 2
 
Ch 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architectureCh 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architecture
 
Troubleshooting BGP
Troubleshooting BGPTroubleshooting BGP
Troubleshooting BGP
 
Network Programming in Java
Network Programming in JavaNetwork Programming in Java
Network Programming in Java
 
TFTP
TFTPTFTP
TFTP
 
Networking in Java
Networking in JavaNetworking in Java
Networking in Java
 
Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...
Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...
Mobicents Summit 2012 - Vladimir Ralev - Mobicents Load Balancer and High Ava...
 
Openflow Protocol
Openflow ProtocolOpenflow Protocol
Openflow Protocol
 

Viewers also liked

Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin Writing
Schalk Cronjé
 
Captain Agile and the Providers of Value
Captain Agile and the Providers of ValueCaptain Agile and the Providers of Value
Captain Agile and the Providers of Value
Schalk Cronjé
 
Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)
Schalk Cronjé
 
Simple Measurements #2
Simple Measurements #2Simple Measurements #2
Simple Measurements #2
Schalk Cronjé
 
Prosperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology LeadershipProsperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology Leadership
Schalk Cronjé
 
Agile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-drivenAgile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-driven
Schalk Cronjé
 
Agile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-drivenAgile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-driven
Schalk Cronjé
 
Simple measurements
Simple measurementsSimple measurements
Simple measurements
Schalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
Schalk Cronjé
 
Practical Multi-language Generative Programming
Practical Multi-language Generative ProgrammingPractical Multi-language Generative Programming
Practical Multi-language Generative Programming
Schalk Cronjé
 
Generative Programming In The Large - Applied C++ meta-programming
Generative Programming In The Large - Applied C++ meta-programmingGenerative Programming In The Large - Applied C++ meta-programming
Generative Programming In The Large - Applied C++ meta-programming
Schalk Cronjé
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Schalk Cronjé
 
Death of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused TestingDeath of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused Testing
Schalk Cronjé
 
Asciidoctor in 15min
Asciidoctor in 15minAsciidoctor in 15min
Asciidoctor in 15min
Schalk Cronjé
 
Practical C++ Generative Programming
Practical C++ Generative ProgrammingPractical C++ Generative Programming
Practical C++ Generative Programming
Schalk Cronjé
 
Software Packaging with RPM
Software Packaging with RPMSoftware Packaging with RPM
Software Packaging with RPM
Schalk Cronjé
 
Gradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionGradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 version
Schalk Cronjé
 
Seeking Enligtenment - A journey of purpose rather than instruction
Seeking Enligtenment  - A journey of purpose rather than instructionSeeking Enligtenment  - A journey of purpose rather than instruction
Seeking Enligtenment - A journey of purpose rather than instruction
Schalk Cronjé
 

Viewers also liked (20)

Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin Writing
 
Captain Agile and the Providers of Value
Captain Agile and the Providers of ValueCaptain Agile and the Providers of Value
Captain Agile and the Providers of Value
 
Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)Groovy VFS (with 1.0 news)
Groovy VFS (with 1.0 news)
 
Simple Measurements #2
Simple Measurements #2Simple Measurements #2
Simple Measurements #2
 
Real World TDD
Real World TDDReal World TDD
Real World TDD
 
Prosperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology LeadershipProsperity-focused Agile Technology Leadership
Prosperity-focused Agile Technology Leadership
 
Agile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-drivenAgile teams - Prosperity Focused, Values-driven
Agile teams - Prosperity Focused, Values-driven
 
Agile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-drivenAgile teams - Value Focused; Values-driven
Agile teams - Value Focused; Values-driven
 
Simple measurements
Simple measurementsSimple measurements
Simple measurements
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Practical Multi-language Generative Programming
Practical Multi-language Generative ProgrammingPractical Multi-language Generative Programming
Practical Multi-language Generative Programming
 
Generative Programming In The Large - Applied C++ meta-programming
Generative Programming In The Large - Applied C++ meta-programmingGenerative Programming In The Large - Applied C++ meta-programming
Generative Programming In The Large - Applied C++ meta-programming
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016
 
Death of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused TestingDeath of Agile : Welcome to Value-focused Testing
Death of Agile : Welcome to Value-focused Testing
 
Asciidoctor in 15min
Asciidoctor in 15minAsciidoctor in 15min
Asciidoctor in 15min
 
Practical C++ Generative Programming
Practical C++ Generative ProgrammingPractical C++ Generative Programming
Practical C++ Generative Programming
 
Software Packaging with RPM
Software Packaging with RPMSoftware Packaging with RPM
Software Packaging with RPM
 
Gradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionGradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 version
 
Seeking Enligtenment - A journey of purpose rather than instruction
Seeking Enligtenment  - A journey of purpose rather than instructionSeeking Enligtenment  - A journey of purpose rather than instruction
Seeking Enligtenment - A journey of purpose rather than instruction
 
Web browser
Web browserWeb browser
Web browser
 

Similar to RfC2822 for Mere Mortals

Byte Ordering - Unit 2.pptx
Byte Ordering - Unit 2.pptxByte Ordering - Unit 2.pptx
Byte Ordering - Unit 2.pptx
RockyBhai46825
 
Addressing in networking (IP,MAC,Port addressing)
Addressing in networking (IP,MAC,Port addressing)Addressing in networking (IP,MAC,Port addressing)
Addressing in networking (IP,MAC,Port addressing)
Geethu Jose
 
CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5
CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5
CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5
Waqas Ahmed Nawaz
 
Http2 Security Perspective
Http2 Security PerspectiveHttp2 Security Perspective
Http2 Security Perspective
Sunil Kumar
 
4 technical-dns-workshop-day2
4 technical-dns-workshop-day24 technical-dns-workshop-day2
4 technical-dns-workshop-day2
DNS Entrepreneurship Center
 
Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014Đồng Quốc Vương
 
Ccna 4 Final 4 Version 4.0 Answers
Ccna 4 Final 4 Version 4.0 AnswersCcna 4 Final 4 Version 4.0 Answers
Ccna 4 Final 4 Version 4.0 Answers
CCNA4Answers
 
Networking Basics with Linux
Networking Basics with LinuxNetworking Basics with Linux
Networking Basics with Linux
Henry Osborne
 
File 10 - CSX 334 _VRA NBO.ppsx
File 10 - CSX 334 _VRA NBO.ppsxFile 10 - CSX 334 _VRA NBO.ppsx
File 10 - CSX 334 _VRA NBO.ppsx
gaurav201196
 
Bt0076, tcp ip
Bt0076, tcp ipBt0076, tcp ip
Bt0076, tcp ip
smumbahelp
 
Bt0076, tcp ip
Bt0076, tcp ipBt0076, tcp ip
Bt0076, tcp ip
smumbahelp
 
1. You are to write a client-server application to support Calculus�.pdf
1. You are to write a client-server application to support Calculus�.pdf1. You are to write a client-server application to support Calculus�.pdf
1. You are to write a client-server application to support Calculus�.pdf
aliradios
 
Protocol Buffers
Protocol BuffersProtocol Buffers
Protocol Buffers
Software Infrastructure
 
Ccna1 v6.0 pretest exam answers 2018
Ccna1 v6.0 pretest exam answers 2018Ccna1 v6.0 pretest exam answers 2018
Ccna1 v6.0 pretest exam answers 2018
Download Mipdfcom
 
44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...
44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...
44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...
44CON
 
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014Đồng Quốc Vương
 
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Amazon Web Services
 
Simplifying open stack and kubernetes networking with romana
Simplifying open stack and kubernetes networking with romanaSimplifying open stack and kubernetes networking with romana
Simplifying open stack and kubernetes networking with romana
Juergen Brendel
 
Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)
Scott Mansfield
 
Simplifying the OpenStack and Kubernetes network stack with Romana
Simplifying the OpenStack and Kubernetes network stack with RomanaSimplifying the OpenStack and Kubernetes network stack with Romana
Simplifying the OpenStack and Kubernetes network stack with Romana
Juergen Brendel
 

Similar to RfC2822 for Mere Mortals (20)

Byte Ordering - Unit 2.pptx
Byte Ordering - Unit 2.pptxByte Ordering - Unit 2.pptx
Byte Ordering - Unit 2.pptx
 
Addressing in networking (IP,MAC,Port addressing)
Addressing in networking (IP,MAC,Port addressing)Addressing in networking (IP,MAC,Port addressing)
Addressing in networking (IP,MAC,Port addressing)
 
CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5
CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5
CCNA (R & S) Module 01 - Introduction to Networks - Chapter 5
 
Http2 Security Perspective
Http2 Security PerspectiveHttp2 Security Perspective
Http2 Security Perspective
 
4 technical-dns-workshop-day2
4 technical-dns-workshop-day24 technical-dns-workshop-day2
4 technical-dns-workshop-day2
 
Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_5_v5_0_exam_answers_2014
 
Ccna 4 Final 4 Version 4.0 Answers
Ccna 4 Final 4 Version 4.0 AnswersCcna 4 Final 4 Version 4.0 Answers
Ccna 4 Final 4 Version 4.0 Answers
 
Networking Basics with Linux
Networking Basics with LinuxNetworking Basics with Linux
Networking Basics with Linux
 
File 10 - CSX 334 _VRA NBO.ppsx
File 10 - CSX 334 _VRA NBO.ppsxFile 10 - CSX 334 _VRA NBO.ppsx
File 10 - CSX 334 _VRA NBO.ppsx
 
Bt0076, tcp ip
Bt0076, tcp ipBt0076, tcp ip
Bt0076, tcp ip
 
Bt0076, tcp ip
Bt0076, tcp ipBt0076, tcp ip
Bt0076, tcp ip
 
1. You are to write a client-server application to support Calculus�.pdf
1. You are to write a client-server application to support Calculus�.pdf1. You are to write a client-server application to support Calculus�.pdf
1. You are to write a client-server application to support Calculus�.pdf
 
Protocol Buffers
Protocol BuffersProtocol Buffers
Protocol Buffers
 
Ccna1 v6.0 pretest exam answers 2018
Ccna1 v6.0 pretest exam answers 2018Ccna1 v6.0 pretest exam answers 2018
Ccna1 v6.0 pretest exam answers 2018
 
44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...
44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...
44CON London 2015 - Reverse engineering and exploiting font rasterizers: the ...
 
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
Www ccnav5 net_ccna_1_chapter_8_v5_0_exam_answers_2014
 
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
 
Simplifying open stack and kubernetes networking with romana
Simplifying open stack and kubernetes networking with romanaSimplifying open stack and kubernetes networking with romana
Simplifying open stack and kubernetes networking with romana
 
Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)Application Caching: The Hidden Microservice (SAConf)
Application Caching: The Hidden Microservice (SAConf)
 
Simplifying the OpenStack and Kubernetes network stack with Romana
Simplifying the OpenStack and Kubernetes network stack with RomanaSimplifying the OpenStack and Kubernetes network stack with Romana
Simplifying the OpenStack and Kubernetes network stack with Romana
 

More from Schalk Cronjé

DocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldDocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM World
Schalk Cronjé
 
DocuOps & Asciidoctor
DocuOps & AsciidoctorDocuOps & Asciidoctor
DocuOps & Asciidoctor
Schalk Cronjé
 
What's new in Asciidoctor
What's new in AsciidoctorWhat's new in Asciidoctor
What's new in Asciidoctor
Schalk Cronjé
 
Probability Management
Probability ManagementProbability Management
Probability Management
Schalk Cronjé
 
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionCool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Schalk Cronjé
 
Cool JVM Tools to Help You Test
Cool JVM Tools to Help You TestCool JVM Tools to Help You Test
Cool JVM Tools to Help You Test
Schalk Cronjé
 
Using the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM DevelopmentUsing the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM Development
Schalk Cronjé
 
Gradle in 45min
Gradle in 45minGradle in 45min
Gradle in 45min
Schalk Cronjé
 
Seeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instructionSeeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instruction
Schalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
Schalk Cronjé
 
Beyond Estimates - Probability Management
Beyond Estimates - Probability ManagementBeyond Estimates - Probability Management
Beyond Estimates - Probability Management
Schalk Cronjé
 
Documentation An Engineering Problem Unsolved
Documentation  An Engineering Problem UnsolvedDocumentation  An Engineering Problem Unsolved
Documentation An Engineering Problem Unsolved
Schalk Cronjé
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot World
Schalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
Schalk Cronjé
 
Idiomatic gradle plugin writing
Idiomatic gradle plugin writingIdiomatic gradle plugin writing
Idiomatic gradle plugin writing
Schalk Cronjé
 
Tree of Knowledge - About Philosophy, Unity & Testing
Tree of Knowledge - About Philosophy, Unity & TestingTree of Knowledge - About Philosophy, Unity & Testing
Tree of Knowledge - About Philosophy, Unity & Testing
Schalk Cronjé
 
Beyond estimates - Overview at Agile:MK
Beyond estimates - Overview at Agile:MKBeyond estimates - Overview at Agile:MK
Beyond estimates - Overview at Agile:MK
Schalk Cronjé
 
Beyond estimates - Reflection on the state of Agile Forecasting
Beyond estimates - Reflection on the state of Agile ForecastingBeyond estimates - Reflection on the state of Agile Forecasting
Beyond estimates - Reflection on the state of Agile Forecasting
Schalk Cronjé
 
Seeking enligtenment - A journey of "Why?" rather than "How?"
Seeking enligtenment - A journey of "Why?" rather than "How?"Seeking enligtenment - A journey of "Why?" rather than "How?"
Seeking enligtenment - A journey of "Why?" rather than "How?"
Schalk Cronjé
 
Groovy VFS
Groovy VFSGroovy VFS
Groovy VFS
Schalk Cronjé
 

More from Schalk Cronjé (20)

DocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM WorldDocuOps & Asciidoctor in a JVM World
DocuOps & Asciidoctor in a JVM World
 
DocuOps & Asciidoctor
DocuOps & AsciidoctorDocuOps & Asciidoctor
DocuOps & Asciidoctor
 
What's new in Asciidoctor
What's new in AsciidoctorWhat's new in Asciidoctor
What's new in Asciidoctor
 
Probability Management
Probability ManagementProbability Management
Probability Management
 
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionCool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
 
Cool JVM Tools to Help You Test
Cool JVM Tools to Help You TestCool JVM Tools to Help You Test
Cool JVM Tools to Help You Test
 
Using the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM DevelopmentUsing the Groovy Ecosystem for Rapid JVM Development
Using the Groovy Ecosystem for Rapid JVM Development
 
Gradle in 45min
Gradle in 45minGradle in 45min
Gradle in 45min
 
Seeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instructionSeeking Enligtenment - A journey of purpose rather tan instruction
Seeking Enligtenment - A journey of purpose rather tan instruction
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Beyond Estimates - Probability Management
Beyond Estimates - Probability ManagementBeyond Estimates - Probability Management
Beyond Estimates - Probability Management
 
Documentation An Engineering Problem Unsolved
Documentation  An Engineering Problem UnsolvedDocumentation  An Engineering Problem Unsolved
Documentation An Engineering Problem Unsolved
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot World
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Idiomatic gradle plugin writing
Idiomatic gradle plugin writingIdiomatic gradle plugin writing
Idiomatic gradle plugin writing
 
Tree of Knowledge - About Philosophy, Unity & Testing
Tree of Knowledge - About Philosophy, Unity & TestingTree of Knowledge - About Philosophy, Unity & Testing
Tree of Knowledge - About Philosophy, Unity & Testing
 
Beyond estimates - Overview at Agile:MK
Beyond estimates - Overview at Agile:MKBeyond estimates - Overview at Agile:MK
Beyond estimates - Overview at Agile:MK
 
Beyond estimates - Reflection on the state of Agile Forecasting
Beyond estimates - Reflection on the state of Agile ForecastingBeyond estimates - Reflection on the state of Agile Forecasting
Beyond estimates - Reflection on the state of Agile Forecasting
 
Seeking enligtenment - A journey of "Why?" rather than "How?"
Seeking enligtenment - A journey of "Why?" rather than "How?"Seeking enligtenment - A journey of "Why?" rather than "How?"
Seeking enligtenment - A journey of "Why?" rather than "How?"
 
Groovy VFS
Groovy VFSGroovy VFS
Groovy VFS
 

Recently uploaded

急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Sanjeev Rampal
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
natyesu
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
VivekSinghShekhawat2
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 

Recently uploaded (20)

急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 

RfC2822 for Mere Mortals

  • 1. What's in an Email Address? RFC2822 Em@il @ddresses for Mere Mortals Schalk W. Cronjé @ysb33r
  • 2. Why This Topic? ● Recurring bugs in software we build ● Lack of understanding at all levels – Developers – Testers – Support People ● Assumptions made, without reading RFCs ● Understanding RFCs are not straightforward – RTFM is difficult when TFM cannot be found ● We require a basic reference
  • 3. Content ● Overview ● Local-part ● Domain-part ● Valid or not? ● The real world
  • 4. Brave, brave RFC World RRFFCC22882211 RRFFCC11003344 RRFFCC11003355 RRFFCC22882222 RRFFCC882211 RRFFCC882222 Domain name specification. Restrictions on email addresses at protocol levels. Specifies layout of email transmitted over internet. Specifies format of email address. RRFFCC22004477 Encoding of 8-bit in RFC2822 header fields RRFFCC33449900 Encoding international domain names RRFFCC11112233 ((PPaarrttiiaallllyy uuppddaatteedd bbyy RRFFCC22882211)) Requirements for internet hosts
  • 5. Address Format Modern format local-part @ domain-part Historic format (RFC821/RFC2821) source-route : local-part @ domain-part
  • 6. RFC2822 Local Parts ● Unrestricted characters 0..9 a..z A..Z ! # $ % & ' * + - / = ? ^ _ ` | { } ~ . ● Quotable charactersq u( oted by “ ) < [ ( : @ ; ) ] > , non-ws-ctrl ● Illegal characters All 8-bit. ● Whitespace ws-ctrl illegal, only used for folding in headers space character is valid if quoted [ RFC2821: 4.1.2; RFC2822: 3.2, 3.4 ]
  • 7. Local Payload ● Routing characters – ! % have been used for local-routing in legacy systems, including UUCP and MHS. – Can be used to bypass routing in mis-configured systems. ● Shell exploits – | / ` $ have been used to attempt remote command execution
  • 8. Does Case Matter? ● Case is ignored in domain ntaba.biz == ntaba.biz ● Strictly-speaking case matters in local-parts schalk@ntaba.biz != ScHaLk@ntaba.biz – Most MTAs ignore case – RFC2821 discourages use of case as a distinguishing factor [ RFC2821: 2.4 ]
  • 9. Does Size Matter? ● RFC2821 places limitations on length of local-part and domain-part – 64 characters for local-part – 255 characters for domain-part ● This is normally not a problem for messages transmitted across the internet, but can be problematic for in-house applications or encoded email addresses such as X.400. ● Many MTAs will now ignore this length restriction as long as the overall SMTP protocol line length restriction is not exceeded. [ RFC2821: 4.5.3.1 ]
  • 10. Domain Parts ● Can either be a RFC1035 domain or an address literal ● Valid characters for domain names: a..z A..Z 0..9 - ● Subdomains separated by dot character. ● Subdomain may not start or end with dash. ● 255 characters max length. ● 63 characters max per subdomain. ● Cannot start or end in dot. ● Restriction of subdomain starting with digit have been relaxed.
  • 11. Address Literals ● Workarounds for when host names cannot be resolved. – @[protocol:host-address] – IPv4: @[192.1.1.1] – IPv6: @[IPv6:fe80::a00:20ff:fec2:2ef4] ● Protocol must be registered with ICANN. [ RFC2821: 4.1.3 ]
  • 12. International Domain Names ● Domain names not representable in US-ASCII can be registered ● Such domain names cannot be handles by DNS or existing protocols ● RFC 3490 describes the encoding/decoding of such domain names from presentation to protocol: exämple.com => xn--example-cua.com ● Potential for phising
  • 13. Valid or not? schalk_cronje@ntaba.biz ● Valid even under strict RFC2822 interpretation ● Most punctuation are valid in local part, including: {$cha?k*cr%nje}@ntaba.biz
  • 14. Valid or not? schalk_cronje@[192.168.1.1] ● Yes, the domain part is an address-literal ● Acceptance of address-literals should be configurable – They can be security risks – RFC2821 prefers usage of MX-based deliveries.
  • 15. Valid or not? schalk_cronje@192.168.1.1 ● No, it is not an address-literal nor a valid domain name. ● Some systems will attempt to deliver this by passing the 192.168.1.1 to the domain resolving subsystem, which in return will simply return the IP address. – This violates RFC1123 – This is a potential security risk. [ RFC1123: 2.1 ]
  • 16. Valid or not? schalk_cronje@1967.com ● Not valid according to RFC1035 ● Limitation lifted in RFC1123. [ RFC1123: 2.1 ]
  • 17. Valid or not? schalk_cronje@#192168 ● Valid in RFC821 for compatibility with non-TCP/IP networks. ● Outlawed by RFC2821. ● Not supported by any modern MTA. [ RFC821: 4.1.2; RFC2821: F.4 ]
  • 18. Valid or not? schalk_cronje@.ntaba.biz ● No, domain-part may not start with a dot. [ RFC2822: 3.2.4 ]
  • 19. Valid or not? schalk_cronje@ntaba.biz. ● No, strictly RFC2822 states that domain-part may not end with a dot. ● RFC1034 use the dot-ending to indicate absolute domains (FQDN) in resource records. ● Most systems will accept, resolve and deliver this [ RFC2822: 3.2.4; RFC1034: 3.1]
  • 20. Valid or not? schalk_cronje@ntaba..biz. ● No, consecutive dots are not allowed in domain parts. [ RFC2822: 3.2.4; RFC1034: 3.1]
  • 21. Valid or not? ● No. .schalk_cronje@ntaba.biz schalk..cronje@ntaba.biz – Local-parts may not start with a dot. – Consecutive dots are not allowed in local parts. ● Pragmatically, many known MTAs don’t care [ RFC2822: 3.2.4]
  • 22. Valid or not? schalk_cronje@lon_eng.ntaba.biz ● No, _ is not valid in domain names ● Some DNS servers will support this. ● Some sites do use th_e for internal systems. ● It remains illegal for internet operations [ RFC2821: 4.1.3 ]
  • 23. Valid or not? schalk_cronje@lon_eng@ntaba.biz ● No, @ cannot be used unquoted in local parts “schalk_cronje@lon_eng”@ntaba.biz schalk_cronje@lon_eng@ntaba.biz [ RFC2822: 3.2.5, 3.4 ]
  • 24. Local-part Quoting ● Quoting should only be used where absolutely necessary ● Where a quoted-form have an unquoted form... – The two forms are equivalent – The unquoted form should be used for transmission ● Quoting is performed by enclosing local-part in quotes or preceding a character by backslash. [ RFC2821: 4.1.2 ]
  • 25. Valid or not? <schalk_cronje@ntaba.biz> ● No, this is an envelope for email addresses ● The following is valid: “<schalk_cronje>”@ntaba.biz
  • 26. Valid or not? schalk_O”cronje@ntaba.biz ● No, the double quote is a quoting character.
  • 27. Valid or not? schalk_O'cronje@ntaba.biz ● Yes, apostrophe is valid in unquoted form
  • 28. Valid or not? “schalk_O”cronje”@ntaba.biz ● This is debatable ● Neither RFC2821, nor RFC2822, is completely clear whether the double quote is valid if escaped Note that the backslash, "", is a quote character, which is used to indicate that the next character is to be used literally [ RFC2821: 4.1.2 ]
  • 29. Valid or not? schalk_cronjé@ntaba.biz ● Not at RFC2821/RFC2822 levels - contains at one least 8-bit character ● Can be completely valid at the presentation level – Email client can take care of translation between a user-readable form and a level suitable for transmission ● There is NO agreed standard for encoding non-US-ASCII in local parts
  • 30. My 8-bit's Worth ● Custom encoding is valid, when both the sender and receiver will know about the encoding – Intermediate relays will simply pass it through ● UTF-7: schalk+AF8-cronj+AOk@ntaba.biz ● RFC2047 (adapted): =?UTF-8?Q?schalk_cronj=C3=A9?=@ntaba.biz ● Storing email addresses with 8-bit content in XML is problematic – requires encoding.
  • 31. The 8-bit Legacy ● RFC822 was written in a 7-bit world – It can be misinterpreted as to 8-bit being legal. ● Some MTAs will actually transmit 8-bit characters in email addresses ● In-house systems might have a requirement for 8-bit ● An email must be able to allow, block, quarantine or filter on 8-bit characters.
  • 32. Valid or not? "`echo haX0r | /usr/bin/passwd root --stdin`"@ntaba.biz ● Valid even under strict RFC2822 interpretation ● Quoting allows for spaces and | to be used ● Imagine if this was passed to a shell script in a badly configured system!
  • 33. Valid or not? "@lon-eng,@scm-eng:schalk_cronje"@ntaba.biz ● Valid even under strict RFC2822 interpretation ● Quoting allows fo@r :, to be used
  • 34. Valid or not? @lon-eng,@scm-eng:schalk_cronje@ntaba.biz ● Valid even under strict RFC2822 interpretation ● This is an example of a source-route. ● Usage is deprecated ● It is best to remove them, before relaying. [ RFC2821: 3.7, C, F.2 ]
  • 35. Practical Validation ● Address validation cannot purely be performed against the RFC ● Context is very important ● Validation at user-level will differ from that at protocol-level. RFC rule of thum: bBe as lenient as possible in what you accept, but as strict as possible in what you send out.
  • 36. Validation Context ● Context places additional demands on validation algorithms ● Validation algorithms must be configurable – Allows for specifics in user environments – Allows for adaptability within various code subsystems
  • 37. Pattern Matching ● DOS-patterns (*?) is useful, but not good enough ● Regex is a better way to perform complex pattern matches – Not all users understand regex – It is therefore good to give users the option of an input notation, but use regex internally to perform the matching
  • 38. The *? Problem schalk*cronje@ntaba.biz ● The above is a valid email address ● Was the intention to filter for this exact address? ● Or was the intention to filter for addresses such as schalkRfcDudecronje@ntaba.biz ● Regex: – schalk*cronje@ntaba.biz – schalk.*cronje@ntaba.biz
  • 39. Lists of Addresses ● RFC2822 uses the comma for separating address lists in headers ● A common misnomer is that it is easy to delimit addresses usin;g o r ,. ● Although it is possible, it is no trivial task to parse lists such as schalk@ntaba.biz, “s,c,h,a,l,k”@ntaba.biz ,s,cha,lk@ntaba.biz , “sch”,alk”@ntaba.biz
  • 40. Real World Violations ● Use of _ in domain-part ● Domain part starts with dot ● Domain part ends in dot ● 4000 characters in local part ● 8-bit characters in local-part
  • 41. What can we do? ● Developers should never make any assumptions as to what the customer might need or to what the customer's infrastructure might be – Code to be as RFC-compliant as possible, but allow for configurability as and when needed. – User interfaces should be context-sensitive. ● Testers should ensure that nobody makes such assumptions
  • 42. Handling email addresses is an extraodinary complex matter for something very simple. Next time you enter an email address... ...you might not want to take it for granted Questions ?