1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
NEWS
To-do list:
Option to enable EMACS-like user folder versioning on each run.
The IMAP support is naive. Chris Newman, one of the IMAP maintainers,
criticized it as follows:
------------------------------- CUT HERE -----------------------------------
On Wed, 18 Sep 1996, Eric S. Raymond wrote:
> 1. I do one one SELECT, at the beginning of the fetch.
>
> 2. I assume that I can pick an upper bound on message numbers from the EXISTS
> reponse.
Correct.
> 3. If there is an UNSEEN nnn trailer on the OK response to SELECT, I assume
> that the unseen messages have message numbers which are the nnn consecutive
> integers up to and including the upper bound.
>
> 4. Otherwise, if the response included RECENT nnn, I assume that the unseen
> messages have message numbers which are the nnn consecutive integers up to
> and including the upper bound.
These will only work if your client is the only client that accesses the
INBOX. There is no requirement that the UNSEEN and RECENT messages are at
the end of the folder in general.
If you want to present all UNSEEN messages and flag all the messages you
download as SEEN, you could do a SEARCH UNSEEN and just fetch those
messages.
However, the proper thing to do if you want to present the messages when
disconnected from the server is to use UIDs. To do this, you remember the
highest UID you have (you can initialize to 0), and fetch everything with
a higher UID. Ideally, you shouldn't cause the SEEN flag to be set until
the user has actually seen the message. This requires STORE +FLAGS SEEN
for those messages which have been seen since the last update.
The key thing to remember is that in IMAP the server holds the
authoratative list of messages and the client just holds a cache. This is
a very different model from POP.
------------------------------- CUT HERE -----------------------------------
IMAP extensions for secure challenge-response.
Recode POP2 to use the same driver/method strategy as POP3/IMAP, so
all three protocols will be able to forward messages through the generic
driver to SMTP. (This requires that we find a POP2 server to test with.)
3.2:
* RPOP support (coded at a user's request but untested).
* Ported to QNX (see the Makefile).
* Add Michael Schwendt's code for improved sizeticker.
* Improved RFC822 parsing (thanks to Rob Funk).
* Move the per-user lockfile to /tmp so it gets cleared at reboot time.
* Warn users that running concurrent instances of popclient is a bad idea.
* Try USER and HOME to set defaults before going to the password file.
This should work better in Sun NIS environments.
3.1:
* MDA arguments are now dumped when using the -V option.
* Sendmail delivery from background seems to work now.
* We have IMAP2bis/IMAP4 support.
* Code now autoprobes for a POP3, IMAP, or POP2 server if no protocol is
specified.
* SMTP forwarding support. Thanks to Harry Hochheiser <harry@tigger.jvnc.net>
for this simple but clever idea. It's now the default delivery mode.
* If no UNIX From line is found, popclient will now synthesize a correct
line from the RFC822 From line.
* It is now possible to specify the host TCP/IP port number to connect to.
3.05:
* Experimental support for RFC1725-compliant POP servers with the UIDL
command and without LAST.
3.04:
* Logfile option works.
3.03:
* Minor bug fixes for password querying and redirection to stdout.
3.02:
* Correct buggy processing of nokeep/noflush/fetchall.
* Fix buggy -mda option processing.
* Added -N/--norewrite option.
* Delivery via sendmail now works in non-daemon mode.
3.01:
* Fixed a lexical analyzer bug in quoted-string processing.
* Fixed a bug in dump_options that caused username to be displayed incorrectly.
* The lock assertion code was in the wrong place relative to the daemonize()
call.
3.0:
Eric S. Raymond <esr@thyrsus.com> hacked extensively on 3.0b6 and took over
the package with the consent of Carl Harris, the original implementor.
Some of the 3.0 feature additions were inspired by Sean Oh's fetchpop 1.8
code, and a few use code directly lifted from fetchpop. Here are my (Eric's)
change notes:
CONFIGURATION AND BUILDING
* The autoconfigure script incorrectly assumed that all Linuxes use
/usr/bin/deliver. Under Linux it now checks for both /usr/bin/delivermail
and /bin/mail.
* I added a distribution-maker production to Makefile.in.
OPTIONS AND COMMAND LINE
* I have removed the -p command-line option. Given that there's a .poprc
facility there is no excuse for encouraging users to put plaintext passwords
in scripts which might be readable.
* Calling popclient with no arguments now causes it to query or operate
on every host in the .poprc file.
* I have made --version more useful by having it dump the computed
connection options for each server specified.
* The user can now explicitly set an MDA (such as procmail) with the
new option -m or -mda. Various possible MDAs are listed on the man page.
POPRC FILE SYNTAX
* The .poprc lexer now supports "-enclosed strings which may contain
whitespace.
* I added a --yydebug option to enable .poprc parser debugging at runtime
if the parser was generated with --debug. It's not documented.
* You may now have a `defaults' entry in .poprc which sets overrideable
values for other entries. See the man page for details.
* It is now possible to set keep, flush and fetchall in your .poprc file.
* Fixed incorrect numbering of source lines in .poprc parse error messages.
* The configure.in specification no longer uses the obsolete AC_TRY_COMPILE
macro (it uses AC_TRY_LINK instead).
MAILBOX LOCKING
* I have added mandatory locking of mailbox files where supported.
This will cover Linux systems, in particular.
* The default behavior is now to do lock-protected append on the user's
system mailbox rather than using delivermail or some other MDA.
(This is a performance hack.)
* The autoconfigure script now looks for standard mail locations. The
default mail delivery agent is used only if it can't find a mail spool
directory in the standard places.
FUNCTIONAL ENHANCEMENTS
* When using POP3, message headers are edited so that replies won't foo up.
Anything that looks like a mail ID local to the POP host gets @ and the
pop servername attached to it before being appended to the user's
mailbox or passed to an MDA.
* I have implemented daemon mode.
* I have added a lock check to ensure that there is only one popclient
running per user, and a --quit option to kill the currently running
one.
DOCUMENTATION
* All changes and feature additions have been tested in actual use and are
documented on the man page.
* I have turned the comments in the sample.poprc into a new manual
section documenting the .poprc format.
MISCELLANEOUS BUG FIXES
* I fixed some de-initialization bugs in pop2.c and pop3.c that led to
fd leaks (these became painfully obvious when I tested daemon mode!).
* I've fixed the flaky parser error messages. They turned out to be due
to a misdeclaration of yytext.
These are Carl Harris's change notes from prevuious releases:
3.0b5
o "From " header fix in pop2.c and pop3.c
o Surpress "..." output when --stdout option specified in pop3.c
3.0b4
o alloca fix.
o various diagnostic/informational message fixes.
3.0b3
o Support for retrieving only new messages from maildrop when
using POP3.
o Support for retrieving only the first n lines of each message
when using POP3.
o APOP authentication support.
o Buffered socket input.
3.0b2
This is a "new features" release.
o support for .poprc file.
o GNU-style long options.
o fixed passwords appearing in 'ps' output
o support for multiple servers on one command line
3.0b1
This is mostly a test of the autoconfigure integration.
Among the functions performed by the new configure script, is
the ability to detect known system types, configures the mail
delivery agent (MDA) correctly. This should permanently solve
the problem of using something other than an MDA for mail
delivery (which continues to plague Linux slackware 1.2.9).
For this beta, please check the values of MDA_PATH and MDA_ARGS
carefully. They should match the values found in your
sendmail.cf file on the line which begins with "Mlocal".
Other changes from popclient version 2.21:
o no longer uses getpass() from the C library. The
internal getpassword() function allows the use of long
passwords.
o integrated GNU getopt() for long options. Long option
names will appear in a future beta.
o Several compiler warnings fixed.
o Fixed problems related to missing include files in
Solaris port.
|