Added a small note about referer needing to be complete to comply to the
[platform/upstream/curl.git] / docs / MANUAL
1 LATEST VERSION
2
3   You always find news about what's going on as well as the latest versions
4   from the curl web pages, located at:
5
6         http://curl.haxx.se
7
8 SIMPLE USAGE
9
10   Get the main page from netscape's web-server:
11
12         curl http://www.netscape.com/
13
14   Get the root README file from funet's ftp-server:
15
16         curl ftp://ftp.funet.fi/README
17
18   Get a gopher document from funet's gopher server:
19
20         curl gopher://gopher.funet.fi
21
22   Get a web page from a server using port 8000:
23
24         curl http://www.weirdserver.com:8000/
25
26   Get a list of the root directory of an FTP site:
27
28         curl ftp://ftp.fts.frontec.se/
29
30   Get the definition of curl from a dictionary:
31
32         curl dict://dict.org/m:curl
33
34 DOWNLOAD TO A FILE
35
36   Get a web page and store in a local file:
37
38         curl -o thatpage.html http://www.netscape.com/
39
40   Get a web page and store in a local file, make the local file get the name
41   of the remote document (if no file name part is specified in the URL, this
42   will fail):
43
44         curl -O http://www.netscape.com/index.html
45
46 USING PASSWORDS
47
48  FTP
49
50    To ftp files using name+passwd, include them in the URL like:
51
52         curl ftp://name:passwd@machine.domain:port/full/path/to/file
53
54    or specify them with the -u flag like
55
56         curl -u name:passwd ftp://machine.domain:port/full/path/to/file
57
58  HTTP
59
60    The HTTP URL doesn't support user and password in the URL string. Curl
61    does support that anyway to provide a ftp-style interface and thus you can
62    pick a file like:
63
64         curl http://name:passwd@machine.domain/full/path/to/file
65
66    or specify user and password separately like in
67
68         curl -u name:passwd http://machine.domain/full/path/to/file
69
70    NOTE! Since HTTP URLs don't support user and password, you can't use that
71    style when using Curl via a proxy. You _must_ use the -u style fetch
72    during such circumstances.
73
74  HTTPS
75
76    Probably most commonly used with private certificates, as explained below.
77
78  GOPHER
79
80    Curl features no password support for gopher.
81
82 PROXY
83
84  Get an ftp file using a proxy named my-proxy that uses port 888:
85
86         curl -x my-proxy:888 ftp://ftp.leachsite.com/README
87
88  Get a file from a HTTP server that requires user and password, using the
89  same proxy as above:
90
91         curl -u user:passwd -x my-proxy:888 http://www.get.this/
92
93  Some proxies require special authentication. Specify by using -U as above:
94
95         curl -U user:passwd -x my-proxy:888 http://www.get.this/
96
97  See also the environment variables Curl support that offer further proxy
98  control.
99
100 RANGES
101
102   With HTTP 1.1 byte-ranges were introduced. Using this, a client can request
103   to get only one or more subparts of a specified document. Curl supports
104   this with the -r flag.
105
106   Get the first 100 bytes of a document:
107
108         curl -r 0-99 http://www.get.this/
109
110   Get the last 500 bytes of a document:
111
112         curl -r -500 http://www.get.this/
113
114   Curl also supports simple ranges for FTP files as well. Then you can only
115   specify start and stop position.
116
117   Get the first 100 bytes of a document using FTP:
118
119         curl -r 0-99 ftp://www.get.this/README  
120
121 UPLOADING
122
123  FTP
124
125   Upload all data on stdin to a specified ftp site:
126
127         curl -t ftp://ftp.upload.com/myfile
128
129   Upload data from a specified file, login with user and password:
130
131         curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile
132
133   Upload a local file to the remote site, and use the local file name remote
134   too:
135  
136         curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
137
138   Upload a local file to get appended to the remote file using ftp:
139
140         curl -T localfile -a ftp://ftp.upload.com/remotefile
141
142   Curl also supports ftp upload through a proxy, but only if the proxy is
143   configured to allow that kind of tunneling. If it does, you can run curl in
144   a fashion similar to:
145
146         curl --proxytunnel -x proxy:port -T localfile ftp.upload.com
147
148  HTTP
149
150   Upload all data on stdin to a specified http site:
151
152         curl -t http://www.upload.com/myfile
153
154   Note that the http server must've been configured to accept PUT before this
155   can be done successfully.
156
157   For other ways to do http data upload, see the POST section below.
158
159 VERBOSE / DEBUG
160
161   If curl fails where it isn't supposed to, if the servers don't let you
162   in, if you can't understand the responses: use the -v flag to get VERBOSE
163   fetching. Curl will output lots of info and all data it sends and
164   receives in order to let the user see all client-server interaction.
165
166         curl -v ftp://ftp.upload.com/
167
168 DETAILED INFORMATION
169
170   Different protocols provide different ways of getting detailed information
171   about specific files/documents. To get curl to show detailed information
172   about a single file, you should use -I/--head option. It displays all
173   available info on a single file for HTTP and FTP. The HTTP information is a
174   lot more extensive.
175
176   For HTTP, you can get the header information (the same as -I would show)
177   shown before the data by using -i/--include. Curl understands the
178   -D/--dump-header option when getting files from both FTP and HTTP, and it
179   will then store the headers in the specified file.
180
181   Store the HTTP headers in a separate file:
182
183         curl --dump-header headers.txt curl.haxx.se
184
185   Note that headers stored in a separate file can be very useful at a later
186   time if you want curl to use cookies sent by the server. More about that in
187   the cookies section.
188
189 POST (HTTP)
190
191   It's easy to post data using curl. This is done using the -d <data>
192   option.  The post data must be urlencoded.
193
194   Post a simple "name" and "phone" guestbook.
195
196         curl -d "name=Rafael%20Sagula&phone=3320780" \
197                 http://www.where.com/guest.cgi
198
199   How to post a form with curl, lesson #1:
200
201   Dig out all the <input> tags in the form that you want to fill in. (There's
202   a perl program called formfind.pl on the curl site that helps with this).
203
204   If there's a "normal" post, you use -d to post. -d takes a full "post
205   string", which is in the format
206
207         <variable1>=<data1>&<variable2>=<data2>&...
208
209   The 'variable' names are the names set with "name=" in the <input> tags, and
210   the data is the contents you want to fill in for the inputs. The data *must*
211   be properly URL encoded. That means you replace space with + and that you
212   write weird letters with %XX where XX is the hexadecimal representation of
213   the letter's ASCII code.
214
215   Example:
216
217   (page located at http://www.formpost.com/getthis/
218
219         <form action="post.cgi" method="post">
220         <input name=user size=10>
221         <input name=pass type=password size=10>
222         <input name=id type=hidden value="blablabla">
223         <input name=ding value="submit">
224         </form>
225
226   We want to enter user 'foobar' with password '12345'.
227
228   To post to this, you enter a curl command line like:
229
230         curl -d "user=foobar&pass=12345&id=blablabla&dig=submit"  (continues)
231           http://www.formpost.com/getthis/post.cgi
232
233
234   While -d uses the application/x-www-form-urlencoded mime-type, generally
235   understood by CGI's and similar, curl also supports the more capable
236   multipart/form-data type. This latter type supports things like file upload.
237
238   -F accepts parameters like -F "name=contents". If you want the contents to
239   be read from a file, use <@filename> as contents. When specifying a file,
240   you can also specify which content type the file is, by appending
241   ';type=<mime type>' to the file name. You can also post contents of several
242   files in one field. So that the field name 'coolfiles' can be sent three
243   files with different content types in a manner similar to:
244
245         curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" \
246         http://www.post.com/postit.cgi
247
248   If content-type is not specified, curl will try to guess from the extension
249   (it only knows a few), or use the previously specified type (from an earlier
250   file if several files are specified in a list) or finally using the default
251   type 'text/plain'.
252
253   Emulate a fill-in form with -F. Let's say you fill in three fields in a
254   form. One field is a file name which to post, one field is your name and one
255   field is a file description. We want to post the file we have written named
256   "cooltext.txt". To let curl do the posting of this data instead of your
257   favourite browser, you have to check out the HTML of the form page to get to
258   know the names of the input fields. In our example, the input field names are
259   'file', 'yourname' and 'filedescription'.
260
261         curl -F "file=@cooltext.txt" -F "yourname=Daniel" \
262              -F "filedescription=Cool text file with cool text inside" \
263              http://www.post.com/postit.cgi
264
265   So, to send two files in one post you can do it in two ways:
266
267   1. Send multiple files in a single "field" with a single field name:
268  
269         curl -F "pictures=@dog.gif,cat.gif" 
270  
271   2. Send two fields with two field names: 
272
273         curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif" 
274
275 REFERER
276
277   A HTTP request has the option to include information about which address
278   that referred to actual page, and curl allows the user to specify that
279   referrer to get specified on the command line. It is especially useful to
280   fool or trick stupid servers or CGI scripts that rely on that information
281   being available or contain certain data.
282
283         curl -e www.coolsite.com http://www.showme.com/
284
285   NOTE: The referer field is defined in the HTTP spec to be a full URL.
286
287 USER AGENT
288
289   A HTTP request has the option to include information about the browser
290   that generated the request. Curl allows it to be specified on the command
291   line. It is especially useful to fool or trick stupid servers or CGI
292   scripts that only accept certain browsers.
293
294   Example:
295
296   curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/
297
298   Other common strings:
299     'Mozilla/3.0 (Win95; I)'     Netscape Version 3 for Windows 95
300     'Mozilla/3.04 (Win95; U)'    Netscape Version 3 for Windows 95
301     'Mozilla/2.02 (OS/2; U)'     Netscape Version 2 for OS/2
302     'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)'           NS for AIX
303     'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)'      NS for Linux
304
305   Note that Internet Explorer tries hard to be compatible in every way:
306     'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)'    MSIE for W95
307
308   Mozilla is not the only possible User-Agent name:
309     'Konqueror/1.0'             KDE File Manager desktop client
310     'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser
311
312 COOKIES
313
314   Cookies are generally used by web servers to keep state information at the
315   client's side. The server sets cookies by sending a response line in the
316   headers that looks like 'Set-Cookie: <data>' where the data part then
317   typically contains a set of NAME=VALUE pairs (separated by semicolons ';'
318   like "NAME1=VALUE1; NAME2=VALUE2;"). The server can also specify for what
319   path the "cookie" should be used for (by specifying "path=value"), when the
320   cookie should expire ("expire=DATE"), for what domain to use it
321   ("domain=NAME") and if it should be used on secure connections only
322   ("secure").
323
324   If you've received a page from a server that contains a header like:
325         Set-Cookie: sessionid=boo123; path="/foo";
326
327   it means the server wants that first pair passed on when we get anything in
328   a path beginning with "/foo".
329
330   Example, get a page that wants my name passed in a cookie:
331
332         curl -b "name=Daniel" www.sillypage.com
333
334   Curl also has the ability to use previously received cookies in following
335   sessions. If you get cookies from a server and store them in a file in a
336   manner similar to:
337
338         curl --dump-header headers www.example.com
339
340   ... you can then in a second connect to that (or another) site, use the
341   cookies from the 'headers' file like:
342
343         curl -b headers www.example.com
344
345   Note that by specifying -b you enable the "cookie awareness" and with -L
346   you can make curl follow a location: (which often is used in combination
347   with cookies). So that if a site sends cookies and a location, you can
348   use a non-existing file to trig the cookie awareness like:
349
350         curl -L -b empty-file www.example.com
351
352   The file to read cookies from must be formatted using plain HTTP headers OR
353   as netscape's cookie file. Curl will determine what kind it is based on the
354   file contents.
355
356 PROGRESS METER
357
358   The progress meter exists to show a user that something actually is
359   happening. The different fields in the output have the following meaning:
360
361   % Total    % Received % Xferd  Average Speed          Time             Curr.
362                                  Dload  Upload Total    Current  Left    Speed
363   0  151M    0 38608    0     0   9406      0  4:41:43  0:00:04  4:41:39  9287
364
365   From left-to-right:
366    %             - percentage completed of the whole transfer
367    Total         - total size of the whole expected transfer
368    %             - percentage completed of the download
369    Received      - currently downloaded amount of bytes
370    %             - percentage completed of the upload
371    Xferd         - currently uploaded amount of bytes
372    Average Speed
373    Dload         - the average transfer speed of the download
374    Average Speed
375    Upload        - the average transfer speed of the upload
376    Time Total    - expected time to complete the operation
377    Time Current  - time passed since the invoke
378    Time Left     - expected time left to completetion
379    Curr.Speed    - the average transfer speed the last 5 seconds (the first
380                    5 seconds of a transfer is based on less time of course.)
381
382   The -# option will display a totally different progress bar that doesn't
383   need much explanation!
384
385 SPEED LIMIT
386
387   Curl offers the user to set conditions regarding transfer speed that must
388   be met to let the transfer keep going. By using the switch -y and -Y you
389   can make curl abort transfers if the transfer speed doesn't exceed your
390   given lowest limit for a specified time.
391
392   To let curl abandon downloading this page if its slower than 3000 bytes per
393   second for 1 minute, run:
394
395         curl -y 3000 -Y 60 www.far-away-site.com
396
397   This can very well be used in combination with the overall time limit, so
398   that the above operatioin must be completed in whole within 30 minutes:
399
400         curl -m 1800 -y 3000 -Y 60 www.far-away-site.com
401
402 CONFIG FILE
403
404   Curl automatically tries to read the .curlrc file (or _curlrc file on win32
405   systems) from the user's home dir on startup.
406
407   The config file could be made up with normal command line switches, but you
408   can also specify the long options without the dashes to make it more
409   readable. You can separate the options and the parameter with spaces, or
410   with = or :. Comments can be used within the file. If the first letter on a
411   line is a '#'-letter the rest of the line is treated as a comment.
412
413   If you want the parameter to contain spaces, you must inclose the entire
414   parameter within double quotes ("). Within those quotes, you specify a
415   quote as \".
416
417   NOTE: You must specify options and their arguments on the same line.
418
419   Example, set default time out and proxy in a config file:
420
421         # We want a 30 minute timeout:
422         -m 1800
423         # ... and we use a proxy for all accesses:
424         proxy = proxy.our.domain.com:8080
425
426   White spaces ARE significant at the end of lines, but all white spaces
427   leading up to the first characters of each line are ignored.
428
429   Prevent curl from reading the default file by using -q as the first command
430   line parameter, like:
431
432         curl -q www.thatsite.com
433
434   Force curl to get and display a local help page in case it is invoked
435   without URL by making a config file similar to:
436
437         # default url to get
438         url = "http://help.with.curl.com/curlhelp.html"
439
440   You can specify another config file to be read by using the -K/--config
441   flag. If you set config file name to "-" it'll read the config from stdin,
442   which can be handy if you want to hide options from being visible in process
443   tables etc:
444
445         echo "user = user:passwd" | curl -K - http://that.secret.site.com
446
447 EXTRA HEADERS
448
449   When using curl in your own very special programs, you may end up needing
450   to pass on your own custom headers when getting a web page. You can do
451   this by using the -H flag.
452
453   Example, send the header "X-you-and-me: yes" to the server when getting a
454   page:
455
456         curl -H "X-you-and-me: yes" www.love.com
457
458   This can also be useful in case you want curl to send a different text in
459   a header than it normally does. The -H header you specify then replaces the
460   header curl would normally send.
461
462 FTP and PATH NAMES
463
464   Do note that when getting files with the ftp:// URL, the given path is
465   relative the directory you enter. To get the file 'README' from your home
466   directory at your ftp site, do:
467
468         curl ftp://user:passwd@my.site.com/README
469
470   But if you want the README file from the root directory of that very same
471   site, you need to specify the absolute file name:
472
473         curl ftp://user:passwd@my.site.com//README
474
475   (I.e with an extra slash in front of the file name.)
476
477 FTP and firewalls
478
479   The FTP protocol requires one of the involved parties to open a second
480   connction as soon as data is about to get transfered. There are two ways to
481   do this.
482
483   The default way for curl is to issue the PASV command which causes the
484   server to open another port and await another connection performed by the
485   client. This is good if the client is behind a firewall that don't allow
486   incoming connections.
487
488         curl ftp.download.com
489
490   If the server for example, is behind a firewall that don't allow connections
491   on other ports than 21 (or if it just doesn't support the PASV command), the
492   other way to do it is to use the PORT command and instruct the server to
493   connect to the client on the given (as parameters to the PORT command) IP
494   number and port.
495
496   The -P flag to curl supports a few different options. Your machine may have
497   several IP-addresses and/or network interfaces and curl allows you to select
498   which of them to use. Default address can also be used:
499
500         curl -P - ftp.download.com
501
502   Download with PORT but use the IP address of our 'le0' interface (this does
503   not work on windows):
504
505         curl -P le0 ftp.download.com
506
507   Download with PORT but use 192.168.0.10 as our IP address to use:
508
509         curl -P 192.168.0.10 ftp.download.com
510
511 NETWORK INTERFACE
512
513   Get a web page from a server using a specified port for the interface:
514
515         curl --interface eth0:1 http://www.netscape.com/
516
517   or
518
519         curl --interface 192.168.1.10 http://www.netscape.com/
520
521 HTTPS
522
523   Secure HTTP requires SSL libraries to be installed and used when curl is
524   built. If that is done, curl is capable of retrieving and posting documents
525   using the HTTPS procotol.
526
527   Example:
528
529         curl https://www.secure-site.com
530
531   Curl is also capable of using your personal certificates to get/post files
532   from sites that require valid certificates. The only drawback is that the
533   certificate needs to be in PEM-format. PEM is a standard and open format to
534   store certificates with, but it is not used by the most commonly used
535   browsers (Netscape and MSEI both use the so called PKCS#12 format). If you
536   want curl to use the certificates you use with your (favourite) browser, you
537   may need to download/compile a converter that can convert your browser's
538   formatted certificates to PEM formatted ones. This kind of converter is
539   included in recent versions of OpenSSL, and for older versions Dr Stephen
540   N. Henson has written a patch for SSLeay that adds this functionality. You
541   can get his patch (that requires an SSLeay installation) from his site at:
542   http://www.drh-consultancy.demon.co.uk/
543
544   Example on how to automatically retrieve a document using a certificate with
545   a personal password:
546
547         curl -E /path/to/cert.pem:password https://secure.site.com/
548
549   If you neglect to specify the password on the command line, you will be
550   prompted for the correct password before any data can be received.
551
552   Many older SSL-servers have problems with SSLv3 or TLS, that newer versions
553   of OpenSSL etc is using, therefore it is sometimes useful to specify what
554   SSL-version curl should use. Use -3 or -2 to specify that exact SSL version
555   to use:
556
557         curl -2 https://secure.site.com/
558
559   Otherwise, curl will first attempt to use v3 and then v2.
560
561   To use OpenSSL to convert your favourite browser's certificate into a PEM
562   formatted one that curl can use, do something like this (assuming netscape,
563   but IE is likely to work similarly):
564
565     You start with hitting the 'security' menu button in netscape. 
566
567     Select 'certificates->yours' and then pick a certificate in the list 
568
569     Press the 'export' button 
570
571     enter your PIN code for the certs 
572
573     select a proper place to save it 
574
575     Run the 'openssl' application to convert the certificate. If you cd to the
576     openssl installation, you can do it like:
577
578      # ./apps/openssl pkcs12 -certfile [file you saved] -out [PEMfile]
579
580
581 RESUMING FILE TRANSFERS
582
583  To continue a file transfer where it was previously aborted, curl supports
584  resume on http(s) downloads as well as ftp uploads and downloads.
585
586  Continue downloading a document:
587
588         curl -c -o file ftp://ftp.server.com/path/file
589
590  Continue uploading a document(*1):
591
592         curl -c -T file ftp://ftp.server.com/path/file
593
594  Continue downloading a document from a web server(*2):
595
596         curl -c -o file http://www.server.com/
597
598  (*1) = This requires that the ftp server supports the non-standard command
599         SIZE. If it doesn't, curl will say so.
600
601  (*2) = This requires that the wb server supports at least HTTP/1.1. If it
602         doesn't, curl will say so.
603
604 TIME CONDITIONS
605
606  HTTP allows a client to specify a time condition for the document it
607  requests. It is If-Modified-Since or If-Unmodified-Since. Curl allow you to
608  specify them with the -z/--time-cond flag.
609
610  For example, you can easily make a download that only gets performed if the
611  remote file is newer than a local copy. It would be made like:
612
613         curl -z local.html http://remote.server.com/remote.html
614
615  Or you can download a file only if the local file is newer than the remote
616  one. Do this by prepending the date string with a '-', as in:
617
618         curl -z -local.html http://remote.server.com/remote.html
619
620  You can specify a "free text" date as condition. Tell curl to only download
621  the file if it was updated since yesterday:
622
623         curl -z yesterday http://remote.server.com/remote.html
624
625  Curl will then accept a wide range of date formats. You always make the date
626  check the other way around by prepending it with a dash '-'.
627
628 DICT
629
630   For fun try
631
632         curl dict://dict.org/m:curl
633         curl dict://dict.org/d:heisenbug:jargon
634         curl dict://dict.org/d:daniel:web1913
635
636   Aliases for 'm' are 'match' and 'find', and aliases for 'd' are 'define'
637   and 'lookup'. For example,
638
639         curl dict://dict.org/find:curl
640
641   Commands that break the URL description of the RFC (but not the DICT
642   protocol) are
643
644         curl dict://dict.org/show:db
645         curl dict://dict.org/show:strat
646
647   Authentication is still missing (but this is not required by the RFC)
648
649 LDAP
650
651   If you have installed the OpenLDAP library, curl can take advantage of it
652   and offer ldap:// support.
653
654   LDAP is a complex thing and writing an LDAP query is not an easy task. I do
655   advice you to dig up the syntax description for that elsewhere, RFC 1959 if
656   no other place is better.
657
658   To show you an example, this is now I can get all people from my local LDAP
659   server that has a certain sub-domain in their email address:
660
661         curl -B "ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se"
662
663   If I want the same info in HTML format, I can get it by not using the -B
664   (enforce ASCII) flag.
665
666 ENVIRONMENT VARIABLES
667
668   Curl reads and understands the following environment variables:
669
670         HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
671
672   They should be set for protocol-specific proxies. General proxy should be
673   set with
674         
675         ALL_PROXY
676
677   A comma-separated list of host names that shouldn't go through any proxy is
678   set in (only an asterisk, '*' matches all hosts)
679
680         NO_PROXY
681
682   If a tail substring of the domain-path for a host matches one of these
683   strings, transactions with that node will not be proxied.
684
685
686   The usage of the -x/--proxy flag overrides the environment variables.
687
688 NETRC
689
690   Unix introduced the .netrc concept a long time ago. It is a way for a user
691   to specify name and password for commonly visited ftp sites in a file so
692   that you don't have to type them in each time you visit those sites. You
693   realize this is a big security risk if someone else gets hold of your
694   passwords, so therefor most unix programs won't read this file unless it is
695   only readable by yourself (curl doesn't care though).
696
697   Curl supports .netrc files if told so (using the -n/--netrc option). This is
698   not restricted to only ftp, but curl can use it for all protocols where
699   authentication is used.
700
701   A very simple .netrc file could look something like:
702
703         machine curl.haxx.se login iamdaniel password mysecret
704
705 CUSTOM OUTPUT
706
707   To better allow script programmers to get to know about the progress of
708   curl, the -w/--write-out option was introduced. Using this, you can specify
709   what information from the previous transfer you want to extract.
710
711   To display the amount of bytes downloaded together with some text and an
712   ending newline:
713
714         curl -w 'We downloaded %{size_download} bytes\n' www.download.com
715
716 KERBEROS4 FTP TRANSFER
717
718   Curl supports kerberos4 for FTP transfers. You need the kerberos package
719   installed and used at curl build time for it to be used.
720
721   First, get the krb-ticket the normal way, like with the kauth tool. Then use
722   curl in way similar to:
723
724         curl --krb4 private ftp://krb4site.com -u username:fakepwd
725
726   There's no use for a password on the -u switch, but a blank one will make
727   curl ask for one and you already entered the real password to kauth.
728
729 MAILING LIST
730
731   We have an open mailing list to discuss curl, its development and things
732   relevant to this.
733
734   To subscribe, mail curl-request@contactor.se with "subscribe <fill in your
735   email address>" in the body.
736
737   To post to the list, mail curl@contactor.se.
738
739   To unsubcribe, mail curl-request@contactor.se with "unsubscribe <your
740   subscribed email address>" in the body.
741