Add POP3 examples quick reference guide
Co-authored-by: setoelkahfi <1797197+setoelkahfi@users.noreply.github.com>
copilot-swe-agent[bot] committed
Oct 13, 2025 at 17:25 UTC
f9554e8cf3c71607daf7b446a0f002c6cefbf2fd
1 file changed
+379
docs/POP3-EXAMPLES-README.md
new
+379
@@ -0,0 +1,379 @@
1
+# POP3 Examples and Documentation - Quick Reference
2
+
3
+This document provides a quick reference to all POP3 examples and documentation in this repository.
4
+
5
+## 📚 Documentation Files
6
+
7
+### Main Documentation
8
+- **[POP3.md](POP3.md)** (21KB) - Comprehensive POP3 protocol documentation
9
+ - Protocol basics and command reference
10
+ - Setup and configuration guide
11
+ - Integration with SMTP and IMAP
12
+ - Troubleshooting guide
13
+ - Best practices
14
+
15
+### Configuration
16
+- **[config-examples.md](config-examples.md)** (12KB) - Configuration examples
17
+ - Basic configurations for development
18
+ - Production configurations with TLS
19
+ - Database and LDAP authentication
20
+ - Docker and cluster configurations
21
+ - Environment-specific settings
22
+
23
+### Testing
24
+- **[TESTING.md](TESTING.md)** (20KB) - Comprehensive testing guide
25
+ - Unit testing examples
26
+ - Integration testing patterns
27
+ - Mock testing strategies
28
+ - Load testing examples
29
+ - Security testing
30
+ - CI/CD setup
31
+
32
+### Scenarios
33
+- **[SCENARIOS.md](SCENARIOS.md)** (24KB) - Real-world usage scenarios
34
+ - Basic email retrieval
35
+ - Download and delete workflows
36
+ - Selective message management
37
+ - Mobile client scenarios
38
+ - Email backup solutions
39
+ - Multi-device synchronization
40
+ - Email migration
41
+ - Automated processing
42
+ - Error recovery
43
+
44
+## 💻 Code Examples
45
+
46
+### Rust Examples
47
+
48
+#### 1. POP3 Client (`examples/pop3_client.rs`)
49
+Complete POP3 client implementation demonstrating:
50
+- Connection to POP3 server
51
+- USER/PASS authentication
52
+- STAT command (mailbox statistics)
53
+- LIST command (message listing)
54
+- RETR command (message retrieval)
55
+- DELE command (message deletion)
56
+- RSET command (reset deletions)
57
+- NOOP command (keepalive)
58
+- QUIT command (close connection)
59
+- Error handling for all operations
60
+
61
+**Run it:**
62
+```bash
63
+cargo run --example pop3_client
64
+```
65
+
66
+**Example output:**
67
+```
68
+===========================================
69
+POP3 Client Examples
70
+===========================================
71
+
72
+This example demonstrates various POP3 operations.
73
+Note: These examples assume a POP3 server is running on localhost:110
74
+
75
+EXAMPLE 1: Complete Email Retrieval Session
76
+========================================
77
+Connecting to localhost:110...
78
+```
79
+
80
+#### 2. POP3 Server (`examples/pop3_server.rs`)
81
+Mock POP3 server implementation for testing:
82
+- Multi-threaded connection handling
83
+- User authentication
84
+- Mailbox management
85
+- All standard POP3 commands
86
+- Sample test data
87
+
88
+**Run it:**
89
+```bash
90
+cargo run --example pop3_server
91
+```
92
+
93
+**Features:**
94
+- Pre-configured test users (testuser/testpass, alice/password123, bob/secret)
95
+- Sample messages for testing
96
+- Proper POP3 protocol responses
97
+- Transaction state management
98
+
99
+#### 3. Integration Tests (`examples/pop3_integration_test.rs`)
100
+Comprehensive integration test suite with:
101
+- Basic authentication tests
102
+- Message operation tests
103
+- Deletion workflow tests
104
+- Error handling tests
105
+- Complete session tests
106
+- Concurrent connection tests
107
+- Command sequencing tests
108
+
109
+**Run it:**
110
+```bash
111
+cargo run --example pop3_integration_test
112
+```
113
+
114
+**Test Coverage:**
115
+- ✅ 7 integration test scenarios
116
+- ✅ Mock server implementation
117
+- ✅ Concurrent client testing
118
+- ✅ Error condition testing
119
+
120
+### Python Examples
121
+
122
+#### POP3 Client (`docs/scripts/pop3-client.py`)
123
+Python implementation using `poplib` library:
124
+- 9 complete example scenarios
125
+- All major POP3 operations
126
+- Email parsing with `email` library
127
+- Secure POP3S support
128
+- Comprehensive error handling
129
+
130
+**Run it:**
131
+```bash
132
+python3 docs/scripts/pop3-client.py
133
+```
134
+
135
+**Examples included:**
136
+1. Basic connection and authentication
137
+2. List all messages
138
+3. Retrieve and parse message
139
+4. Retrieve all messages
140
+5. Delete messages
141
+6. TOP command (headers only)
142
+7. UIDL command (unique IDs)
143
+8. Error handling scenarios
144
+9. Secure POP3S connection
145
+
146
+## 🚀 Quick Start
147
+
148
+### 1. Basic POP3 Client Usage
149
+
150
+```rust
151
+use std::io::{BufRead, BufReader, Write};
152
+use std::net::TcpStream;
153
+
154
+fn main() -> Result<(), Box<dyn std::error::Error>> {
155
+ // Connect
156
+ let mut stream = TcpStream::connect("localhost:110")?;
157
+ let mut reader = BufReader::new(stream.try_clone()?);
158
+
159
+ // Read greeting
160
+ let mut line = String::new();
161
+ reader.read_line(&mut line)?;
162
+ println!("{}", line);
163
+
164
+ // Authenticate
165
+ writeln!(stream, "USER testuser")?;
166
+ reader.read_line(&mut line)?;
167
+
168
+ writeln!(stream, "PASS testpass")?;
169
+ line.clear();
170
+ reader.read_line(&mut line)?;
171
+
172
+ // Get statistics
173
+ writeln!(stream, "STAT")?;
174
+ line.clear();
175
+ reader.read_line(&mut line)?;
176
+ println!("Mailbox: {}", line);
177
+
178
+ // Close
179
+ writeln!(stream, "QUIT")?;
180
+
181
+ Ok(())
182
+}
183
+```
184
+
185
+### 2. Using netcat for Manual Testing
186
+
187
+```bash
188
+# Connect to POP3 server
189
+nc localhost 110
190
+
191
+# Then type these commands:
192
+USER testuser
193
+PASS testpass
194
+STAT
195
+LIST
196
+RETR 1
197
+DELE 1
198
+QUIT
199
+```
200
+
201
+### 3. Python Quick Start
202
+
203
+```python
204
+import poplib
205
+
206
+# Connect and authenticate
207
+pop3 = poplib.POP3("localhost", 110)
208
+pop3.user("testuser")
209
+pop3.pass_("testpass")
210
+
211
+# Get statistics
212
+message_count, mailbox_size = pop3.stat()
213
+print(f"{message_count} messages, {mailbox_size} bytes")
214
+
215
+# List messages
216
+response, message_list, octets = pop3.list()
217
+for msg in message_list:
218
+ print(msg.decode())
219
+
220
+# Retrieve message
221
+response, lines, octets = pop3.retr(1)
222
+message = b'\n'.join(lines)
223
+print(message.decode())
224
+
225
+# Close
226
+pop3.quit()
227
+```
228
+
229
+## 📋 Command Reference
230
+
231
+### Authorization State
232
+| Command | Description | Example |
233
+|---------|-------------|---------|
234
+| `USER` | Username | `USER john@example.com` |
235
+| `PASS` | Password | `PASS secretpassword` |
236
+
237
+### Transaction State
238
+| Command | Description | Example |
239
+|---------|-------------|---------|
240
+| `STAT` | Get statistics | `STAT` → `+OK 5 3200` |
241
+| `LIST` | List messages | `LIST` or `LIST 1` |
242
+| `RETR` | Retrieve message | `RETR 1` |
243
+| `DELE` | Mark for deletion | `DELE 1` |
244
+| `NOOP` | No operation | `NOOP` |
245
+| `RSET` | Reset deletions | `RSET` |
246
+| `QUIT` | Close connection | `QUIT` |
247
+
248
+## 🔧 Configuration Examples
249
+
250
+### Basic Development Setup
251
+
252
+```toml
253
+[server]
254
+host = "127.0.0.1"
255
+port = 110
256
+
257
+[authentication]
258
+backend = "file"
259
+users_file = "users.txt"
260
+
261
+[storage]
262
+backend = "maildir"
263
+maildir_path = "./mailboxes"
264
+```
265
+
266
+### Production Setup with TLS
267
+
268
+```toml
269
+[server]
270
+host = "0.0.0.0"
271
+port = 995 # POP3S
272
+
273
+[tls]
274
+enabled = true
275
+cert_path = "/etc/ssl/certs/mail.crt"
276
+key_path = "/etc/ssl/private/mail.key"
277
+
278
+[authentication]
279
+backend = "database"
280
+db_url = "postgresql://user:pass@localhost/maildb"
281
+
282
+[storage]
283
+backend = "maildir"
284
+maildir_path = "/var/mail"
285
+```
286
+
287
+## 🧪 Testing
288
+
289
+### Run All Tests
290
+```bash
291
+# Compile examples
292
+cargo build --examples
293
+
294
+# Run integration tests
295
+cargo run --example pop3_integration_test
296
+
297
+# Run Python examples
298
+python3 docs/scripts/pop3-client.py
299
+```
300
+
301
+### Manual Testing with Server
302
+```bash
303
+# Terminal 1: Start server
304
+cargo run --example pop3_server
305
+
306
+# Terminal 2: Connect with client
307
+cargo run --example pop3_client
308
+```
309
+
310
+## 📊 Test Coverage
311
+
312
+- **Unit Tests**: Command parsing, authentication, mailbox operations
313
+- **Integration Tests**: Complete sessions, concurrent connections, error handling
314
+- **Security Tests**: Rate limiting, injection protection, authentication
315
+- **Load Tests**: Concurrent connections, message retrieval performance
316
+
317
+## 🔐 Security Best Practices
318
+
319
+1. **Always use TLS/SSL in production** (POP3S on port 995)
320
+2. **Use strong password hashing** (argon2, bcrypt)
321
+3. **Implement rate limiting** for authentication attempts
322
+4. **Validate all inputs** to prevent injection attacks
323
+5. **Set appropriate timeouts** to prevent resource exhaustion
324
+6. **Monitor and log** all authentication attempts
325
+7. **Keep certificates up to date**
326
+
327
+## 🐛 Troubleshooting
328
+
329
+### Connection Refused
330
+```bash
331
+# Check if server is running
332
+netstat -an | grep :110
333
+
334
+# Test connection
335
+telnet localhost 110
336
+```
337
+
338
+### Authentication Fails
339
+```bash
340
+# Check server logs
341
+tail -f /var/log/pop3/server.log
342
+
343
+# Test with known-good credentials
344
+echo -e "USER testuser\r\nPASS testpass\r\nQUIT\r\n" | nc localhost 110
345
+```
346
+
347
+### Messages Not Found
348
+```bash
349
+# List messages first
350
+echo -e "USER testuser\r\nPASS testpass\r\nLIST\r\nQUIT\r\n" | nc localhost 110
351
+
352
+# Check mailbox directory
353
+ls -la /var/mail/testuser/new/
354
+```
355
+
356
+## 📖 Additional Resources
357
+
358
+- **RFC 1939** - POP3 Protocol Specification
359
+- **RFC 2595** - Using TLS with POP3
360
+- **RFC 2449** - POP3 Extension Mechanism
361
+
362
+## 🤝 Contributing
363
+
364
+When adding new examples or documentation:
365
+
366
+1. Follow existing code style and structure
367
+2. Add comprehensive comments
368
+3. Include error handling
369
+4. Provide working examples
370
+5. Update this README
371
+6. Add tests for new functionality
372
+
373
+## 📝 License
374
+
375
+See the main repository LICENSE file for license information.
376
+
377
+---
378
+
379
+**Need help?** Check the detailed documentation files or open an issue on GitHub.