Update docs + minor changes.
* .gitmodules: Add imprimatur. * Makefile.am: Likewise. * configure.ac: Likewise. * doc/Makefile.am: Likewise. * bootstrap.conf: Comment out make in doc/texinfo * doc/texinfo/Makefile.am: Rewrite. * doc/texinfo/fdl.texi: Minor change. * doc/texinfo/getdate.texi: Minor change. * doc/texinfo/mailutils.texi: begin rewrite. * doc/texinfo/mu-mh.texi: Minor change. * doc/texinfo/programs.texi: begin rewrite. * doc/texinfo/sieve.texi: Minor change. * doc/texinfo/usage.texi: Minor change. * libmailutils/cfg/lexer.l: Allow for @ in unquoted strings * pop3d/bulletin.c: Relax safety checks for bulletin.db * pop3d/logindelay.c: Relax safety checks for stat.sb * pop3d/pop3d.h (DEFAULT_GROUP_DB_SAFETY): New define.
Showing
19 changed files
with
207 additions
and
456 deletions
... | @@ -15,7 +15,7 @@ | ... | @@ -15,7 +15,7 @@ |
15 | ## You should have received a copy of the GNU General Public License | 15 | ## You should have received a copy of the GNU General Public License |
16 | ## along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. | 16 | ## along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 | ||
18 | ACLOCAL_AMFLAGS = -I m4 -I am -I gint | 18 | ACLOCAL_AMFLAGS = -I m4 -I am -I gint -I doc/imprimatur |
19 | 19 | ||
20 | if MU_COND_PYTHON | 20 | if MU_COND_PYTHON |
21 | PYTHON_DIR = python | 21 | PYTHON_DIR = python | ... | ... |
... | @@ -100,5 +100,5 @@ done | ... | @@ -100,5 +100,5 @@ done |
100 | wget -P m4 http://git.savannah.gnu.org/cgit/radius.git/plain/scripts/radius.m4 | 100 | wget -P m4 http://git.savannah.gnu.org/cgit/radius.git/plain/scripts/radius.m4 |
101 | 101 | ||
102 | # Create included listings for texinfo docs. | 102 | # Create included listings for texinfo docs. |
103 | make -C doc/texinfo -f maint.mk | 103 | #make -C doc/texinfo -f maint.mk |
104 | 104 | ... | ... |
... | @@ -1316,23 +1316,7 @@ dnl get sysconfdir expanded. | ... | @@ -1316,23 +1316,7 @@ dnl get sysconfdir expanded. |
1316 | CPPFLAGS="$CPPFLAGS -DSYSCONFDIR=\\\"\$(sysconfdir)\\\"" | 1316 | CPPFLAGS="$CPPFLAGS -DSYSCONFDIR=\\\"\$(sysconfdir)\\\"" |
1317 | 1317 | ||
1318 | # Doc hints. | 1318 | # Doc hints. |
1319 | # Select a rendition level: | 1319 | IMPRIMATUR_INIT([doc/imprimatur]) |
1320 | # DISTRIB for stable releases (at most one dot in the version number) | ||
1321 | # and maintenance releases (two dots, patchlevel < 50) | ||
1322 | # PROOF for alpha releases. | ||
1323 | # PUBLISH can only be required manually when running make in doc/ | ||
1324 | AC_SUBST(RENDITION) | ||
1325 | case `echo $VERSION|sed 's/[[^.]]//g'` in | ||
1326 | ""|".") RENDITION=DISTRIB;; | ||
1327 | "..") if test `echo $VERSION | sed 's/.*\.//'` -lt 50; then | ||
1328 | RENDITION=DISTRIB | ||
1329 | else | ||
1330 | AC_DEFINE_UNQUOTED([MU_ALPHA_RELEASE], 1, | ||
1331 | [Define if this is an alpha release]) | ||
1332 | RENDITION=PROOF | ||
1333 | fi;; | ||
1334 | *) RENDITION=PROOF;; | ||
1335 | esac | ||
1336 | 1320 | ||
1337 | AC_CONFIG_COMMANDS([status],[ | 1321 | AC_CONFIG_COMMANDS([status],[ |
1338 | cat <<EOF | 1322 | cat <<EOF | ... | ... |
... | @@ -15,5 +15,5 @@ | ... | @@ -15,5 +15,5 @@ |
15 | ## You should have received a copy of the GNU General Public License | 15 | ## You should have received a copy of the GNU General Public License |
16 | ## along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. | 16 | ## along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 | ||
18 | SUBDIRS = texinfo man | 18 | SUBDIRS = imprimatur texinfo man |
19 | EXTRA_DIST = ChangeLog.CVS rfc/README | 19 | EXTRA_DIST = ChangeLog.CVS rfc/README | ... | ... |
imprimatur @ f32ef198
1 | Subproject commit f32ef1983968e755cd580b06e369476d7e7f88b6 |
... | @@ -19,6 +19,10 @@ mailutils.tmp | ... | @@ -19,6 +19,10 @@ mailutils.tmp |
19 | mailutils.toc | 19 | mailutils.toc |
20 | mailutils.tp | 20 | mailutils.tp |
21 | mailutils.vr | 21 | mailutils.vr |
22 | mailutils.fl | ||
23 | mailutils.kw | ||
24 | mailutils.pdf | ||
25 | mailutils.pr | ||
22 | mdate-sh | 26 | mdate-sh |
23 | muint.info* | 27 | muint.info* |
24 | stamp-1 | 28 | stamp-1 | ... | ... |
... | @@ -17,174 +17,53 @@ | ... | @@ -17,174 +17,53 @@ |
17 | 17 | ||
18 | info_TEXINFOS = mailutils.texi | 18 | info_TEXINFOS = mailutils.texi |
19 | 19 | ||
20 | INCFILES = \ | ||
21 | addr.inc\ | ||
22 | http.inc\ | ||
23 | mailcap.inc\ | ||
24 | numaddr.inc\ | ||
25 | sfrom.inc\ | ||
26 | url-parse.inc | ||
27 | |||
28 | RENDITION_TEXI=rendition.texi macros.texi | ||
29 | |||
30 | mailutils_TEXINFOS = \ | 20 | mailutils_TEXINFOS = \ |
31 | address.texi\ | ||
32 | attribute.texi\ | ||
33 | auth.texi\ | ||
34 | body.texi\ | ||
35 | c-api.texi\ | ||
36 | encoding.texi\ | ||
37 | envelope.texi\ | ||
38 | fdl.texi\ | 21 | fdl.texi\ |
39 | folder.texi\ | ||
40 | framework.texi\ | ||
41 | getdate.texi\ | 22 | getdate.texi\ |
42 | headers.texi\ | 23 | macros.texi\ |
43 | imap4.texi\ | ||
44 | iterator.texi\ | ||
45 | libmu_scm.texi\ | ||
46 | libmu_auth.texi\ | ||
47 | libmu_sieve.texi\ | ||
48 | locker.texi\ | ||
49 | mailbox.texi\ | ||
50 | mailcap.texi\ | ||
51 | maildir.texi\ | ||
52 | mailer.texi\ | ||
53 | mbox.texi\ | ||
54 | message.texi\ | ||
55 | mh.texi\ | ||
56 | mu-mh.texi\ | 24 | mu-mh.texi\ |
57 | mu_address.texi\ | ||
58 | mu_body.texi\ | ||
59 | mu_logger.texi\ | ||
60 | mu_mailbox.texi\ | ||
61 | mu_message.texi\ | ||
62 | mu_mime.texi\ | ||
63 | mu_scm.texi\ | ||
64 | nntp.texi\ | ||
65 | parse822.texi\ | ||
66 | pop3.texi\ | ||
67 | programs.texi\ | 25 | programs.texi\ |
68 | sendmail.texi\ | ||
69 | sieve.texi\ | 26 | sieve.texi\ |
70 | smtp.texi\ | ||
71 | stream.texi\ | ||
72 | usage.texi\ | 27 | usage.texi\ |
73 | url.texi\ | 28 | version.texi |
74 | $(RENDITION_TEXI)\ | ||
75 | $(INCFILES) | ||
76 | 29 | ||
77 | DISTCLEANFILES=*.pgs *.kys *.vrs | ||
78 | clean-local: | 30 | clean-local: |
79 | rm -rf manual | 31 | rm -rf manual |
80 | 32 | ||
81 | # The rendering level is one of PUBLISH, DISTRIB or PROOF. | 33 | AM_MAKEINFOFLAGS = @IMPRIMATUR_MAKEINFOFLAGS@ |
82 | # Just call `make RENDITION=PROOF [target]' if you want PROOF rendition. | 34 | # Imprimatur setup |
83 | 35 | imprimatur_INPUT=$(info_TEXINFOS) $(mailutils_TEXINFOS) | |
84 | MAKEINFOFLAGS=-D$(RENDITION) | 36 | include ../imprimatur/imprimatur.mk |
85 | GENDOCS=gendocs.sh | 37 | #CHECK_DOCS=$(top_srcdir)/@IMPRIMATUR_MODULE_DIR@/check-docs.sh |
86 | TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E | ||
87 | |||
88 | # Make sure you set TEXINPUTS. | ||
89 | # TEXINPUTS=/usr/share/texmf/pdftex/plain/misc/ is ok for most distributions | ||
90 | |||
91 | TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$$TEXINPUTS | ||
92 | |||
93 | manual: | ||
94 | TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \ | ||
95 | MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \ | ||
96 | TEXI2DVI="$(TEXI2DVI) -t @finalout" \ | ||
97 | $(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual' | ||
98 | |||
99 | |||
100 | EXTRA_DIST=gendocs_template mastermenu.el untabify.el | ||
101 | 38 | ||
102 | master-menu: | 39 | # Checking |
103 | emacs -batch -l mastermenu.el -f make-master-menu $(info_TEXINFOS) | 40 | all-check-docs: imprimatur-basic-checks |
104 | 41 | ||
105 | untabify: | 42 | check-docs: |
106 | emacs -batch -l untabify.el $(info_TEXINFOS) $(mailutils_TEXINFOS) | 43 | @$(MAKE) -k all-check-docs |
107 | |||
108 | fix-sentence-spacing: | ||
109 | for file in $(info_TEXINFOS) $(mailutils_TEXINFOS); \ | ||
110 | do \ | ||
111 | if grep -q '\. [@A-Z]' $$file; then \ | ||
112 | mv $$file $${file}~; \ | ||
113 | sed -r 's/\. ([@A-Z])/. \1/g' $${file}~ > $$file; \ | ||
114 | fi; \ | ||
115 | done | ||
116 | |||
117 | final: untabify fix-sentence-spacing master-menu | ||
118 | |||
119 | |||
120 | # Checks | ||
121 | check-tabs: | ||
122 | @if test -n "`cat $(info_TEXINFOS) $(mailutils_TEXINFOS) |\ | ||
123 | tr -d -c '\t'`"; then \ | ||
124 | echo >&2 "Sources contain tabs; run make untabify"; \ | ||
125 | false; \ | ||
126 | fi | ||
127 | |||
128 | check-sentence-spacing: | ||
129 | @if grep -q '\. [@A-Z]' $(info_TEXINFOS) $(mailutils_TEXINFOS); then \ | ||
130 | echo >&2 "Sources contain double-space sentence separators"; \ | ||
131 | echo >&2 "Run make fix-sentence-spacing to fix"; \ | ||
132 | fi | ||
133 | 44 | ||
134 | check-format: check-tabs check-sentence-spacing | 45 | # |
135 | 46 | ||
136 | check-refs: | 47 | master-menu: imprimatur-master-menu |
137 | @for file in $(info_TEXINFOS) $(mailutils_TEXINFOS); \ | 48 | untabify: imprimatur-untabify |
138 | do \ | 49 | final: imprimatur-final |
139 | sed -e = $$file | \ | ||
140 | sed -n 'N;/@FIXME-.*ref/{s/\(^[0-9][0-9]*\).*@FIXME-.*ref{\([^}]*\)}.*/'$$file':\1: \2/gp}'; \ | ||
141 | done > $@-t; \ | ||
142 | if [ -s $@-t ]; then \ | ||
143 | echo >&2 "Unresolved cross-references:"; \ | ||
144 | cat $@-t >&2;\ | ||
145 | rm $@-t; \ | ||
146 | else \ | ||
147 | rm -f $@-t; \ | ||
148 | fi | ||
149 | 50 | ||
150 | check-fixmes: | 51 | # Web manual |
151 | @for file in $(info_TEXINFOS) $(mailutils_TEXINFOS); \ | 52 | #EXTRA_DIST = \ |
152 | do \ | 53 | # gendocs_template |
153 | sed -e = $$file | \ | ||
154 | sed -n 'N;/@FIXME{/{s/\(^[0-9][0-9]*\).*@FIXME{\([^}]*\).*/'$$file':\1: \2/gp}'; \ | ||
155 | done > $@-t; \ | ||
156 | if [ -s $@-t ]; then \ | ||
157 | echo >&2 "Unresolved FIXMEs:"; \ | ||
158 | cat $@-t >&2; \ | ||
159 | rm $@-t; \ | ||
160 | false; \ | ||
161 | else \ | ||
162 | rm -f $@-t; \ | ||
163 | fi | ||
164 | 54 | ||
165 | check-writeme: | 55 | GENDOCS=gendocs.sh |
166 | @grep -Hn @WRITEME $(info_TEXINFOS) $(mailutils_TEXINFOS) > $@-t; \ | 56 | TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E |
167 | if [ -s $@-t ]; then \ | ||
168 | echo "Empty nodes:"; \ | ||
169 | cat $@-t; \ | ||
170 | rm $@-t; \ | ||
171 | false;\ | ||
172 | else \ | ||
173 | rm $@-t; \ | ||
174 | fi | ||
175 | 57 | ||
176 | check-unrevised: | 58 | .PHONY: manual |
177 | @grep -Hn @UNREVISED $(info_TEXINFOS) $(mailutils_TEXINFOS) > $@-t; \ | 59 | manual: |
178 | if [ -s $@-t ]; then \ | 60 | TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \ |
179 | echo >&2 "Unrevised nodes:"; \ | 61 | MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS) $(AM_MAKEINFOFLAGS)" \ |
180 | cat $@-t >&2; \ | 62 | TEXI2DVI="$(TEXI2DVI)" \ |
181 | rm $@-t; \ | 63 | TEXI2HTML="texi2html $(AM_MAKEINFOFLAGS)" \ |
182 | false;\ | 64 | $(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual' |
183 | else \ | ||
184 | rm $@-t; \ | ||
185 | fi | ||
186 | 65 | ||
187 | all-check-docs: check-format check-writeme check-unrevised check-refs check-fixmes | 66 | manual.tar.bz2: manual |
67 | tar cfj manual.tar.bz2 manual | ||
188 | 68 | ||
189 | check-docs: | 69 | man-tar: manual.tar.bz2 |
190 | $(MAKE) -k all-check-docs | ... | ... |
... | @@ -3,12 +3,11 @@ | ... | @@ -3,12 +3,11 @@ |
3 | @setfilename mailutils.info | 3 | @setfilename mailutils.info |
4 | @settitle GNU Mailutils Manual | 4 | @settitle GNU Mailutils Manual |
5 | @setchapternewpage odd | 5 | @setchapternewpage odd |
6 | @finalout | ||
7 | @c %**end of header | 6 | @c %**end of header |
8 | 7 | ||
9 | @include version.texi | 8 | @include version.texi |
10 | @include macros.texi | ||
11 | @include rendition.texi | 9 | @include rendition.texi |
10 | @include macros.texi | ||
12 | 11 | ||
13 | @c Define indices | 12 | @c Define indices |
14 | @defcodeindex op | 13 | @defcodeindex op |
... | @@ -42,7 +41,7 @@ | ... | @@ -42,7 +41,7 @@ |
42 | * readmsg: (mailutils)readmsg. Extract Messages from a Folder. | 41 | * readmsg: (mailutils)readmsg. Extract Messages from a Folder. |
43 | * sieve: (mailutils)sieve. Mail Filtering Utility. | 42 | * sieve: (mailutils)sieve. Mail Filtering Utility. |
44 | * mimeview: (mailutils)mimeview. View MIME Messages. | 43 | * mimeview: (mailutils)mimeview. View MIME Messages. |
45 | * mailutils-config: (mailutils)mailutils-config. List Information about Mailutils. | 44 | * mu: (mailutils)mu. Mailutils Multi-Purpose Tool |
46 | @end direntry | 45 | @end direntry |
47 | @end ifinfo | 46 | @end ifinfo |
48 | 47 | ||
... | @@ -57,13 +56,9 @@ Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, | ... | @@ -57,13 +56,9 @@ Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, |
57 | Permission is granted to copy, distribute and/or modify this document | 56 | Permission is granted to copy, distribute and/or modify this document |
58 | under the terms of the GNU Free Documentation License, Version 1.2 or | 57 | under the terms of the GNU Free Documentation License, Version 1.2 or |
59 | any later version published by the Free Software Foundation; with no | 58 | any later version published by the Free Software Foundation; with no |
60 | Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', | 59 | Invariant Sections, no Front-Cover, and no Back-Cover texts. |
61 | and with the Back-Cover Texts as in (a) below. A copy of the license | 60 | A copy of the license is included in the section entitled ``GNU Free |
62 | is included in the section entitled ``GNU Free Documentation License''. | 61 | Documentation License''. |
63 | |||
64 | (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify | ||
65 | this GNU Manual, like GNU software. Copies published by the Free | ||
66 | Software Foundation raise funds for GNU development.'' | ||
67 | @end copying | 62 | @end copying |
68 | 63 | ||
69 | @titlepage | 64 | @titlepage |
... | @@ -75,9 +70,11 @@ Software Foundation raise funds for GNU development.'' | ... | @@ -75,9 +70,11 @@ Software Foundation raise funds for GNU development.'' |
75 | @insertcopying | 70 | @insertcopying |
76 | @end titlepage | 71 | @end titlepage |
77 | 72 | ||
73 | @ifnothtml | ||
78 | @page | 74 | @page |
79 | @summarycontents | 75 | @summarycontents |
80 | @page | 76 | @page |
77 | @end ifnothtml | ||
81 | @contents | 78 | @contents |
82 | 79 | ||
83 | @ifnottex | 80 | @ifnottex |
... | @@ -125,6 +122,7 @@ Mailutils Programs | ... | @@ -125,6 +122,7 @@ Mailutils Programs |
125 | 122 | ||
126 | * command line:: Command Line Syntax. | 123 | * command line:: Command Line Syntax. |
127 | * configuration:: Common Configuration File. | 124 | * configuration:: Common Configuration File. |
125 | * debugging:: | ||
128 | 126 | ||
129 | * frm and from:: List Headers from a Mailbox. | 127 | * frm and from:: List Headers from a Mailbox. |
130 | * mail:: Send and Receive Mail. | 128 | * mail:: Send and Receive Mail. |
... | @@ -145,7 +143,7 @@ Mailutils Programs | ... | @@ -145,7 +143,7 @@ Mailutils Programs |
145 | 143 | ||
146 | * mh:: The MH Message Handling System. | 144 | * mh:: The MH Message Handling System. |
147 | 145 | ||
148 | * mailutils-config:: Get the Information about the Mailutils Build. | 146 | * mu:: Mailutils Multi-Purpose Tool. |
149 | 147 | ||
150 | Command Line | 148 | Command Line |
151 | 149 | ||
... | @@ -177,13 +175,19 @@ Configuration File Syntax | ... | @@ -177,13 +175,19 @@ Configuration File Syntax |
177 | 175 | ||
178 | * Comments:: | 176 | * Comments:: |
179 | * Statements:: | 177 | * Statements:: |
180 | * Block Statements:: | 178 | * Paths:: |
181 | 179 | ||
182 | Server Settings | 180 | Server Settings |
183 | 181 | ||
184 | * General Server Configuration:: | 182 | * General Server Configuration:: |
185 | * Server Statement:: | 183 | * Server Statement:: |
186 | 184 | ||
185 | Debugging | ||
186 | |||
187 | * Level Syntax:: | ||
188 | * Level BNF:: | ||
189 | * Debugging Categories:: | ||
190 | |||
187 | @command{mail} --- Send and Receive Mail | 191 | @command{mail} --- Send and Receive Mail |
188 | 192 | ||
189 | * Invoking Mail:: Command Line Options. | 193 | * Invoking Mail:: Command Line Options. |
... | @@ -232,6 +236,7 @@ Reading Mail | ... | @@ -232,6 +236,7 @@ Reading Mail |
232 | 236 | ||
233 | * Movemail Configuration:: | 237 | * Movemail Configuration:: |
234 | * Movemail Options:: Description of the Available Options | 238 | * Movemail Options:: Description of the Available Options |
239 | * Ownership:: Setting Destination Mailbox Ownership | ||
235 | * Summary:: Short Movemail Invocation Summary | 240 | * Summary:: Short Movemail Invocation Summary |
236 | 241 | ||
237 | @command{readmsg} --- Extract Messages from a Folder | 242 | @command{readmsg} --- Extract Messages from a Folder |
... | @@ -279,6 +284,7 @@ Maidag Scripting | ... | @@ -279,6 +284,7 @@ Maidag Scripting |
279 | 284 | ||
280 | * Sieve Maidag Filters:: | 285 | * Sieve Maidag Filters:: |
281 | * Scheme Maidag Filters:: | 286 | * Scheme Maidag Filters:: |
287 | * Python Maidag Filters:: | ||
282 | 288 | ||
283 | mimeview | 289 | mimeview |
284 | 290 | ||
... | @@ -310,7 +316,7 @@ Configuring @command{comsatd} | ... | @@ -310,7 +316,7 @@ Configuring @command{comsatd} |
310 | * General Settings:: | 316 | * General Settings:: |
311 | * Security Settings:: | 317 | * Security Settings:: |
312 | 318 | ||
313 | @acronym{MH} --- The MH Message Handling System | 319 | MH --- The MH Message Handling System |
314 | 320 | ||
315 | * Diffs:: Major differences between Mailutils MH and other MH | 321 | * Diffs:: Major differences between Mailutils MH and other MH |
316 | implementations. | 322 | implementations. |
... | @@ -321,70 +327,32 @@ Major differences between Mailutils MH and other MH implementations | ... | @@ -321,70 +327,32 @@ Major differences between Mailutils MH and other MH implementations |
321 | * Profile Variable Diffs:: | 327 | * Profile Variable Diffs:: |
322 | * Program Diffs:: | 328 | * Program Diffs:: |
323 | 329 | ||
324 | @command{mailutils-config} --- Get the Information about the Mailutils Build | 330 | MU |
325 | 331 | ||
326 | * Compiler Flags:: Getting Compiler Flags. | 332 | * mu invocation syntax:: |
327 | * Loader Flags:: Getting Loader Flags. | 333 | * mu help:: |
328 | * General Information:: Obtaining General Build Information. | 334 | * mu info:: |
329 | 335 | * mu cflags:: | |
330 | Mailutils Libraries | 336 | * mu ldflags:: |
331 | 337 | * mu query:: | |
332 | * libmailutils:: The Core Library. | 338 | * mu 2047:: |
333 | * libmu_auth:: Auxiliary Library for Authenticating Users. | 339 | * mu filter:: |
334 | * libmu_scm:: Mailutils to Scheme Interface. | 340 | * mu acl:: |
335 | * libmu_sieve:: GNU Implementation of Sieve Mail Filtering. | 341 | * mu wicket:: |
336 | 342 | * mu dbm:: | |
337 | Framework | 343 | * mu logger:: |
338 | 344 | * mu pop:: | |
339 | * Folder:: Folder. | 345 | * mu imap:: |
340 | * Mailbox:: Mailbox. | 346 | |
341 | * Mailer:: Protocol Used to Send Mail. | 347 | mu dbm |
342 | * Message:: Message. | 348 | |
343 | * Envelope:: Envelope. | 349 | * Create a Database:: |
344 | * Headers:: Headers. | 350 | * Add Records to a Database:: |
345 | * Body:: Body. | 351 | * Delete Records:: |
346 | * Attribute:: Attribute. | 352 | * List the Database:: |
347 | * Stream:: Stream. | 353 | * Dump the Database:: |
348 | * Iterator:: Iterator. | 354 | * Dump Formats:: |
349 | * Authenticator:: Authenticator. | 355 | * Dbm Exit Codes:: |
350 | * Address:: Address. | ||
351 | * Locker:: Locker. | ||
352 | * URL:: Uniform Resource Locators. | ||
353 | * Parse822:: Parsing RFC 822 headers. | ||
354 | * Mailcap:: Parsing RFC 1524 file. | ||
355 | |||
356 | Authentication Library | ||
357 | |||
358 | * Data Types:: | ||
359 | * Initializing libmu_auth:: | ||
360 | * Module Creation and Destruction:: | ||
361 | * Obtaining Authorization Information:: | ||
362 | * Existing Modules:: | ||
363 | * Using libmu_auth in Your Programs:: | ||
364 | |||
365 | Mailutils to Scheme Interface | ||
366 | |||
367 | * Address Functions:: | ||
368 | * Mailbox Functions:: | ||
369 | * Message Functions:: | ||
370 | * MIME Functions:: | ||
371 | * Logging Functions:: | ||
372 | * Other Functions:: | ||
373 | |||
374 | Using @file{libmu_scm} | ||
375 | |||
376 | * Direct Linking:: | ||
377 | * Dynamic Linking:: | ||
378 | |||
379 | Sieve Library | ||
380 | |||
381 | * Sieve Data Types:: | ||
382 | * Manipulating the Sieve Machine:: | ||
383 | * Logging and Diagnostic Functions:: | ||
384 | * Symbol Space Functions:: | ||
385 | * Memory Allocation:: | ||
386 | * Compiling and Executing the Script:: | ||
387 | * Writing Loadable Commands:: | ||
388 | 356 | ||
389 | Sieve Language | 357 | Sieve Language |
390 | 358 | ||
... | @@ -437,36 +405,58 @@ Date Input Formats | ... | @@ -437,36 +405,58 @@ Date Input Formats |
437 | 405 | ||
438 | @node Introduction | 406 | @node Introduction |
439 | @chapter Introduction | 407 | @chapter Introduction |
440 | 408 | GNU Mailutils is a set of libraries and utilities for handling | |
441 | GNU Mailutils is a rich and powerful protocol-independent mail | 409 | electronic mail. It addresses a wide audience and can be of interest |
442 | framework. It contains a series of useful mail libraries, clients, | 410 | to application developers, casual users and system administrators alike. |
443 | and servers. These are the primary mail utilities for the GNU system. | 411 | |
444 | The central library is capable of handling electronic mail in various | 412 | It provides programmers with a consistent API allowing them to |
445 | mailbox formats and protocols, both local and remote. Specifically, | 413 | handle a variety of different mailbox formats transparently and |
446 | this project contains a POP3 server, an IMAP4 server, and a Sieve mail | 414 | without having to delve into complexities of their internal structure. |
447 | filter. It also provides a POSIX `mailx' client, and a collection of | 415 | While doing so, it also provides interfaces that simplify common |
448 | other handy tools. | 416 | programming tasks, such as handling lists, parsing configuration |
449 | 417 | files, etc. The philosophy of Mailutils is to have a single and | |
450 | The GNU Mailutils libraries supply an ample set of primitives for | 418 | consistent programming interface for various objects designed to |
451 | handling electronic mail in programs written in C, C++, Python or | 419 | handle the same task. It tries to use their similarities to create an |
452 | Scheme. | 420 | interface that hides their differences and complexities. This covers |
453 | 421 | a wide variety of programming tasks: apart from mailbox handling, | |
454 | At the core of Mailutils is libmailutils, a library which provides | 422 | Mailutils also contains a unified iterface for work with various DBM |
455 | universal access to various mailboxes and protocols: UNIX mailbox, | 423 | databases and much more. |
456 | Maildir, MH, POP3, IMAP4, Sendmail, SMTP. Mailutils offers functions | 424 | |
457 | for almost any mail-related task, such as parsing of messages, email | 425 | The utilities built upon these libraries share that same distinctive |
458 | addresses and URLs, handling MIME messages, listing mail folders, | 426 | feature: no matter what is the internal structure of an object, it is |
459 | mailcap facilities, extensible Sieve filtering, access control lists. | 427 | always handled the same way as other objects that do the same task. |
460 | It supports various modern data security and authentication | 428 | Again, the most common example of this approach are, of course, |
461 | techniques: TLS encryption, SASL and GSSAPI, to name a few. | 429 | mailboxes. Whatever Mailutils program you use, you can be sure it is |
462 | The framework is able to work with a wide variety of authorization | 430 | able to handle various mailbox formats. You even don't have to inform |
463 | databases, ranging from traditional system password database up to | 431 | it about what type a mailbox is: it will do its best to discover it |
464 | RADIUS, SQL and LDAP. | 432 | automatically. |
465 | 433 | ||
466 | The utilities provided by Mailutils include imap4d and pop3d mail | 434 | This approach sometimes covers entities which are seldom regarded as |
467 | servers, mail reporting utility comsatd, general-purpose mail delivery | 435 | compatible. For example, using Mailutils it is possible to treat an SMTP |
468 | agent maidag, mail filtering program sieve, and an implementation of | 436 | connection as a mailbox opened only for appending new messages. This |
469 | MH message handling system. | 437 | in turn, provides a way for extending the functionality of some |
438 | utilities. As an example, using this concept of mailboxes, the usual | ||
439 | mail delivery agent becomes able to do things usually reserved for | ||
440 | mail transport agents only! | ||
441 | |||
442 | At the core of Mailutils is @file{libmailutils}, a library which | ||
443 | provides an API for accessing a generalized mailbox. A set of | ||
444 | complementary libraries provide methods for handling particular | ||
445 | mailbox implementations: UNIX mailbox, Maildir, MH, POP3, IMAP4, | ||
446 | even SMTP. Mailutils offers functions for almost any mail-related | ||
447 | task, such as parsing of messages, email addresses and URLs, handling | ||
448 | MIME messages, listing mail folders, mailcap facilities, extensible | ||
449 | Sieve filtering, access control lists. It supports various modern | ||
450 | data security and authentication techniques: TLS encryption, SASL and | ||
451 | GSSAPI, to name a few. Mailutils is able to work with a wide | ||
452 | variety of authorization databases, ranging from traditional system | ||
453 | password database up to RADIUS, SQL and LDAP. | ||
454 | |||
455 | The utilities provided by Mailutils include @command{imap4d} and | ||
456 | @command{pop3d} mail servers, mail reporting utility | ||
457 | @command{comsatd}, general-purpose mail delivery agent | ||
458 | @command{maidag}, mail filtering program @command{sieve}, an implementation | ||
459 | of MH message handling system and much more. | ||
470 | 460 | ||
471 | All utilities share the same subset of command line options and use | 461 | All utilities share the same subset of command line options and use |
472 | a unified configuration mechanism, which allows to easily configure | 462 | a unified configuration mechanism, which allows to easily configure |
... | @@ -511,64 +501,34 @@ reference. | ... | @@ -511,64 +501,34 @@ reference. |
511 | This version of the book is not finished. The places that may | 501 | This version of the book is not finished. The places that may |
512 | contain inaccurate information carry prominent notices stating so. | 502 | contain inaccurate information carry prominent notices stating so. |
513 | For updated versions of the documentation, visit | 503 | For updated versions of the documentation, visit |
514 | @uref{http://www.gnu.org/software/mailutils/manual}. If you have any | 504 | @uref{http://mailutils.org/manual}. All material that ends up in this |
515 | questions, feel free to ask them at the mailing list | 505 | document is first published in the Mailutils Wiki, available at |
516 | @email{bug-mailutils@@gnu.org}. | 506 | @uref{http://mailutils.org/wiki}. Be sure to visit it for latest |
507 | updates. | ||
508 | |||
509 | If you have any questions that are not answered there, feel free to | ||
510 | ask them at the mailing list @email{bug-mailutils@@gnu.org}. | ||
511 | |||
512 | @FIXME{Mailutils 3.0 introduced such amount of changes, most of which | ||
513 | being a complete rewrite of the existing codebase, that the library | ||
514 | tutorial and reference became hopelessly obsolete. It is my deep | ||
515 | conviction that using incorrect documentation is much worse than | ||
516 | having no documentation at all, therefore I have withdrawn the | ||
517 | obsolete parts from this edition of GNU Mailutils manual. I am doing | ||
518 | my best to document new Mailutils libraries and hope to be able to | ||
519 | re-introduce these parts of the documentation soon.} | ||
517 | 520 | ||
518 | @node History | 521 | @node History |
519 | @section A bit of History, and why use this package? | 522 | @section A bit of History, and why use this package? |
520 | @UNREVISED | 523 | @UNREVISED |
521 | 524 | ||
522 | This package started off to try and handle large mailbox files more | 525 | This package started off to try and handle large mailbox files more |
523 | gracefully then current POP3 servers did. While it handles this task, | 526 | gracefully then available at that time POP3 servers did. While it |
524 | it also allows you to support a variety of different mailbox formats | 527 | handles this task, it also allows you to support a variety of |
525 | without any real effort on your part. Also, if a new format is added | 528 | different mailbox formats without any real effort on your part. Also, |
526 | at a later date, your program will support that new format | 529 | if a new format is added at a later date, your program will support |
527 | automatically as soon as it is compiled against the new library. | 530 | that new format automatically as soon as it is compiled against the |
528 | 531 | new library. | |
529 | @node Programs | ||
530 | @chapter Mailutils Programs | ||
531 | @cindex Programs | ||
532 | @include programs.texi | ||
533 | |||
534 | @node Libraries | ||
535 | @chapter Mailutils Libraries | ||
536 | @cindex Libraries | ||
537 | |||
538 | @menu | ||
539 | * libmailutils:: The Core Library. | ||
540 | * libmu_auth:: Auxiliary Library for Authenticating Users. | ||
541 | * libmu_scm:: Mailutils to Scheme Interface. | ||
542 | * libmu_sieve:: GNU Implementation of Sieve Mail Filtering. | ||
543 | @end menu | ||
544 | |||
545 | @node libmailutils | ||
546 | @section Framework | ||
547 | @cindex Framework | ||
548 | @include framework.texi | ||
549 | |||
550 | @node libmu_auth | ||
551 | @section Authentication Library | ||
552 | @cindex Authentication Library | ||
553 | @cindex libmu_auth | ||
554 | @include libmu_auth.texi | ||
555 | |||
556 | @node libmu_scm | ||
557 | @section Mailutils to Scheme Interface | ||
558 | @cindex Scheme | ||
559 | @cindex libmu_scm | ||
560 | @include libmu_scm.texi | ||
561 | |||
562 | @node libmu_sieve | ||
563 | @section Sieve Library | ||
564 | @cindex Sieve Library | ||
565 | @cindex libmu_sieve | ||
566 | @include libmu_sieve.texi | ||
567 | |||
568 | @node Sieve Language | ||
569 | @chapter Sieve Language | ||
570 | @cindex Sieve Language | ||
571 | @include sieve.texi | ||
572 | 532 | ||
573 | @node Reporting Bugs | 533 | @node Reporting Bugs |
574 | @chapter Reporting Bugs | 534 | @chapter Reporting Bugs |
... | @@ -588,15 +548,33 @@ needed is: | ... | @@ -588,15 +548,33 @@ needed is: |
588 | The archives of bug-mailutils mailing list are available from | 548 | The archives of bug-mailutils mailing list are available from |
589 | @url{http://mail.gnu.org/@/mailman/@/listinfo/@/bug-mailutils}. | 549 | @url{http://mail.gnu.org/@/mailman/@/listinfo/@/bug-mailutils}. |
590 | 550 | ||
551 | @node Programs | ||
552 | @chapter Mailutils Programs | ||
553 | @cindex Programs | ||
554 | @include programs.texi | ||
555 | |||
556 | @node Libraries | ||
557 | @chapter Mailutils Libraries | ||
558 | @cindex Libraries | ||
559 | @WRITEME | ||
560 | |||
561 | @node Sieve Language | ||
562 | @chapter Sieve Language | ||
563 | @cindex Sieve Language | ||
564 | @include sieve.texi | ||
565 | |||
591 | @node News | 566 | @node News |
592 | @chapter Getting News About GNU Mailutils | 567 | @chapter Getting News About GNU Mailutils |
593 | 568 | ||
594 | The two places to look for any news regarding GNU Mailutils are the | 569 | The two places to look for any news regarding GNU Mailutils are the |
595 | Mailutils homepage at @url{http://www.gnu.org/@/software/@/mailutils}, and the | 570 | Mailutils homepage at @url{http://mailutils.org} or |
596 | project page at @url{http://savannah.gnu.org/@/projects/@/mailutils}. | 571 | @url{http://www.gnu.org/@/software/@/mailutils}, and the project page |
572 | at @url{http://savannah.gnu.org/@/projects/@/mailutils}. | ||
597 | 573 | ||
598 | The updated versions of this manual are available online from | 574 | The updated versions of this manual are available online from |
599 | @url{http://www.gnu.org/@/software/@/mailutils/@/manual}. | 575 | @uref{http://mailutils.org/manual}. See also |
576 | @uref{http://mailutils.org/wiki, Mailutils Wiki} for the latest | ||
577 | updates. | ||
600 | 578 | ||
601 | @node Acknowledgement | 579 | @node Acknowledgement |
602 | @chapter Acknowledgement | 580 | @chapter Acknowledgement |
... | @@ -630,128 +608,18 @@ Wojciech Polak @email{polak@@gnu.org} | ... | @@ -630,128 +608,18 @@ Wojciech Polak @email{polak@@gnu.org} |
630 | 608 | ||
631 | @node References | 609 | @node References |
632 | @appendix References | 610 | @appendix References |
633 | 611 | @WRITEME | |
634 | @itemize @bullet | ||
635 | @item SMTP | ||
636 | |||
637 | @itemize @minus | ||
638 | @item | ||
639 | @cite{RFC 2821: Simple Mail Transfer Protocol} | ||
640 | |||
641 | @item | ||
642 | @cite{RFC 2368: The mailto URL scheme} | ||
643 | |||
644 | @item | ||
645 | @cite{RFC 2487: SMTP Service Extension for Secure SMTP over TLS} | ||
646 | @end itemize | ||
647 | |||
648 | @item POP3 | ||
649 | |||
650 | @itemize @minus | ||
651 | @item | ||
652 | @cite{RFC 1939: Post Office Protocol - Version 3} | ||
653 | |||
654 | @item | ||
655 | @cite{RFC 1734: POP3 AUTHentication command} | ||
656 | |||
657 | @item | ||
658 | @cite{RFC 1957: Some Observations on Implementations of the Post Office | ||
659 | Protocol (POP3)} | ||
660 | |||
661 | @item | ||
662 | @cite{RFC 2449: POP3 Extension Mechanism} | ||
663 | |||
664 | @item | ||
665 | @cite{RFC 2384: POP URL Scheme} | ||
666 | |||
667 | @item | ||
668 | @cite{RFC 2595: Using TLS with IMAP, POP3 and ACAP} | ||
669 | @end itemize | ||
670 | |||
671 | @item IMAP4 | ||
672 | |||
673 | @itemize @minus | ||
674 | @item | ||
675 | @cite{RFC 2060: INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1} | ||
676 | |||
677 | @item | ||
678 | @cite{RFC 2088: IMAP4 non-synchronizing literals} | ||
679 | |||
680 | @item | ||
681 | @cite{RFC 2193: IMAP4 Mailbox Referrals} | ||
682 | |||
683 | @item | ||
684 | @cite{RFC 2221: IMAP4 Login Referrals} | ||
685 | |||
686 | @item | ||
687 | @cite{RFC 2342: IMAP4 Namespace} | ||
688 | |||
689 | @item | ||
690 | @cite{RFC 2192: IMAP URL Scheme} | ||
691 | |||
692 | @item | ||
693 | @cite{RFC 1731: IMAP4 Authentication Mechanisms} | ||
694 | |||
695 | @item | ||
696 | @cite{RFC 2245: Anonymous SASL Mechanism} | ||
697 | |||
698 | @item | ||
699 | @cite{RFC 2595: Using TLS with IMAP, POP3 and ACAP} | ||
700 | @end itemize | ||
701 | |||
702 | @item message formats | ||
703 | |||
704 | @itemize @minus | ||
705 | @item | ||
706 | @cite{RFC 2822: Internet Message Format} | ||
707 | |||
708 | @item | ||
709 | @cite{RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part One: | ||
710 | Format of Internet Message Bodies} | ||
711 | |||
712 | @item | ||
713 | @cite{RFC 2046: Multipurpose Internet Mail Extensions (MIME) Part Two: | ||
714 | Media Types} | ||
715 | |||
716 | @item | ||
717 | @cite{RFC 2047: Multipurpose Internet Mail Extensions (MIME) Part Three: | ||
718 | Message Header Extensions for Non-ASCII Text} | ||
719 | |||
720 | @item | ||
721 | @cite{RFC 2049: Multipurpose Internet Mail Extensions (MIME) Part Five: | ||
722 | Conformance Criteria and Examples} | ||
723 | |||
724 | @item | ||
725 | @cite{RFC 2111: Content-ID and Message-ID Uniform Resource Locators} | ||
726 | @end itemize | ||
727 | |||
728 | @item miscellaneous related topics | ||
729 | |||
730 | @itemize @minus | ||
731 | @item | ||
732 | @cite{RFC 1738: Uniform Resource Locators (URL)} | ||
733 | |||
734 | @item | ||
735 | @cite{RFC 2298: An Extensible Message Format for Message Disposition | ||
736 | Notifications} | ||
737 | |||
738 | @item | ||
739 | @cite{RFC 3028: Sieve: A Mail Filtering Language} | ||
740 | |||
741 | @item | ||
742 | @cite{RFC 3431: Sieve Extension: Relational Tests} | ||
743 | |||
744 | @item | ||
745 | @cite{Internet Email Protocols: A Developer's Guide, by Kevin Johnson} | ||
746 | @end itemize | ||
747 | @end itemize | ||
748 | 612 | ||
749 | @node Date Input Formats | 613 | @node Date Input Formats |
750 | @appendix Date Input Formats | 614 | @appendix Date Input Formats |
751 | @include getdate.texi | 615 | @include getdate.texi |
752 | 616 | ||
617 | @node Usage Vars | ||
618 | @appendix Configuring Help Summary | ||
753 | @include usage.texi | 619 | @include usage.texi |
754 | 620 | ||
621 | @node GNU FDL | ||
622 | @appendix GNU Free Documentation License | ||
755 | @include fdl.texi | 623 | @include fdl.texi |
756 | 624 | ||
757 | @node Function Index | 625 | @node Function Index | ... | ... |
... | @@ -16,7 +16,7 @@ For the information about the current state of Mailutils MH | ... | @@ -16,7 +16,7 @@ For the information about the current state of Mailutils MH |
16 | implementation please refer to file @file{mh/TODO} in the Mailutils | 16 | implementation please refer to file @file{mh/TODO} in the Mailutils |
17 | distribution directory. | 17 | distribution directory. |
18 | 18 | ||
19 | [FIXME] | 19 | @FIXME{This is perhaps not so important now.} |
20 | 20 | ||
21 | @menu | 21 | @menu |
22 | * Diffs:: Major differences between Mailutils MH and other MH | 22 | * Diffs:: Major differences between Mailutils MH and other MH | ... | ... |
This diff could not be displayed because it is too large.
... | @@ -3,8 +3,6 @@ | ... | @@ -3,8 +3,6 @@ |
3 | @c 2008, 2010, 2011 Free Software Foundation, Inc. | 3 | @c 2008, 2010, 2011 Free Software Foundation, Inc. |
4 | @c See file mailutils.texi for copying conditions. | 4 | @c See file mailutils.texi for copying conditions. |
5 | @comment ******************************************************************* | 5 | @comment ******************************************************************* |
6 | @node Usage Vars | ||
7 | @appendix Configuring Help Summary | ||
8 | 6 | ||
9 | Running @command{@var{prog} --help} displays the short usage summary | 7 | Running @command{@var{prog} --help} displays the short usage summary |
10 | for @var{prog} utility (@pxref{Common Options}). This summary is | 8 | for @var{prog} utility (@pxref{Common Options}). This summary is | ... | ... |
... | @@ -100,7 +100,7 @@ P [1-9][0-9]* | ... | @@ -100,7 +100,7 @@ P [1-9][0-9]* |
100 | yylval.string = _mu_line_finish (); | 100 | yylval.string = _mu_line_finish (); |
101 | return MU_TOK_IDENT; } | 101 | return MU_TOK_IDENT; } |
102 | /* Strings */ | 102 | /* Strings */ |
103 | [a-zA-Z0-9_\./:\*=-]+ { _mu_line_begin (); | 103 | [a-zA-Z0-9_\./:\*=@-]+ { _mu_line_begin (); |
104 | _mu_line_add (yytext, yyleng); | 104 | _mu_line_add (yytext, yyleng); |
105 | yylval.string = _mu_line_finish (); | 105 | yylval.string = _mu_line_finish (); |
106 | return MU_TOK_STRING; } | 106 | return MU_TOK_STRING; } | ... | ... |
... | @@ -133,6 +133,8 @@ read_bulletin_db (size_t *pnum) | ... | @@ -133,6 +133,8 @@ read_bulletin_db (size_t *pnum) |
133 | return rc; | 133 | return rc; |
134 | } | 134 | } |
135 | 135 | ||
136 | mu_dbm_safety_set_flags (db, DEFAULT_GROUP_DB_SAFETY); | ||
137 | |||
136 | rc = mu_dbm_safety_check (db); | 138 | rc = mu_dbm_safety_check (db); |
137 | if (rc) | 139 | if (rc) |
138 | { | 140 | { |
... | @@ -225,6 +227,8 @@ write_bulletin_db (size_t num) | ... | @@ -225,6 +227,8 @@ write_bulletin_db (size_t num) |
225 | return rc; | 227 | return rc; |
226 | } | 228 | } |
227 | 229 | ||
230 | mu_dbm_safety_set_flags (db, DEFAULT_GROUP_DB_SAFETY); | ||
231 | |||
228 | rc = mu_dbm_safety_check (db); | 232 | rc = mu_dbm_safety_check (db); |
229 | if (rc && rc != ENOENT) | 233 | if (rc && rc != ENOENT) |
230 | { | 234 | { | ... | ... |
... | @@ -32,8 +32,10 @@ open_stat_db (int mode) | ... | @@ -32,8 +32,10 @@ open_stat_db (int mode) |
32 | return NULL; | 32 | return NULL; |
33 | } | 33 | } |
34 | 34 | ||
35 | mu_dbm_safety_set_flags (db, DEFAULT_GROUP_DB_SAFETY); | ||
36 | |||
35 | rc = mu_dbm_safety_check (db); | 37 | rc = mu_dbm_safety_check (db); |
36 | if (rc) | 38 | if (rc && rc != ENOENT) |
37 | { | 39 | { |
38 | mu_diag_output (MU_DIAG_ERROR, | 40 | mu_diag_output (MU_DIAG_ERROR, |
39 | _("statistics db fails safety check: %s"), | 41 | _("statistics db fails safety check: %s"), | ... | ... |
... | @@ -201,6 +201,17 @@ extern char *apop_database_name; | ... | @@ -201,6 +201,17 @@ extern char *apop_database_name; |
201 | extern int apop_database_safety; | 201 | extern int apop_database_safety; |
202 | extern int apop_database_safety_set; | 202 | extern int apop_database_safety_set; |
203 | 203 | ||
204 | /* Safety checks for group-rw database files, such as stat and bulletin | ||
205 | databases */ | ||
206 | |||
207 | #define DEFAULT_GROUP_DB_SAFETY \ | ||
208 | (MU_FILE_SAFETY_WORLD_WRITABLE| \ | ||
209 | MU_FILE_SAFETY_WORLD_READABLE| \ | ||
210 | MU_FILE_SAFETY_LINKED_WRDIR| \ | ||
211 | MU_FILE_SAFETY_DIR_IWGRP| \ | ||
212 | MU_FILE_SAFETY_DIR_IWOTH) | ||
213 | |||
214 | |||
204 | extern pop3d_command_handler_t pop3d_find_command (const char *name); | 215 | extern pop3d_command_handler_t pop3d_find_command (const char *name); |
205 | 216 | ||
206 | extern int pop3d_stat (char *); | 217 | extern int pop3d_stat (char *); | ... | ... |
-
Please register or sign in to post a comment