diff options
Diffstat (limited to 'pullimap.1')
-rw-r--r-- | pullimap.1 | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/pullimap.1 b/pullimap.1 deleted file mode 100644 index 2d92e9d..0000000 --- a/pullimap.1 +++ /dev/null @@ -1,320 +0,0 @@ -.TH PULLIMAP "1" "MARCH 2016" "PullIMAP" "User Commands" - -.SH NAME -PullIMAP \- Pull mails from an IMAP mailbox and deliver them to a SMTP session - -.SH SYNOPSIS -.B pullimap\fR [\fB--config=\fIFILE\fR] [\fB--idle\fR[\fB=\fISECONDS\fR]] -[\fB--no-delivery\fR] [\fB--quiet\fR] \fISECTION\fR - - -.SH DESCRIPTION -.PP -.B PullIMAP\fR retrieves messages from an IMAP mailbox and deliver them -to a SMTP or LMTP transmission channel. -It can also remove old messages after a configurable retention period. - -.PP -A \fIstatefile\fR is used to keep track of the mailbox's UIDVALIDITY and -UIDNEXT values. While \fBPullIMAP\fR is running, the \fIstatefile\fR is -also used to keep track of UIDs being delivered, which avoids duplicate -deliveries if the process is interrupted. -See the \fBCONTROL FLOW\fR section below. - -.SH OPTIONS -.TP -.B \-\-config=\fR\fIFILE\fR -Specify an alternate configuration file. Relative paths start from -\fI$XDG_CONFIG_HOME\fR, or \fI~/.config\fR if the XDG_CONFIG_HOME -environment variable is unset. - -.TP -.B \fB\-\-idle\fR[\fB=\fR\fIseconds\fR] -Don't exit after a successful poll; instead, keep the connection open -and issue IDLE commands (requires an IMAP server supporting RFC 2177) to -watch for updates in the mailbox. -This also sets SO_KEEPALIVE on the socket. -Each IDLE is terminated after at most \fIseconds\fR (29 minutes by -default) to avoid being logged out for inactivity. - -.TP -.B \fB\-\-no\-delivery -Update the \fIstatefile\fR, but skip SMTP/LMTP delivery. This is mostly -useful for initializing the \fIstatefile\fR when migrating to -\fBPullIMAP\fR from another equivalent program such as \fIgetmail\fR(1) -or \fIfetchmail\fR(1). - -.TP -.B \-q\fR, \fB\-\-quiet\fR -Try to be quiet. - -.TP -.B \-\-debug -Turn on debug mode. Debug messages are written to the error output. -Note that this include all IMAP traffic (except literals). Depending on -the chosen authentication mechanism, this might include authentication -credentials. - -.TP -.B \-h\fR, \fB\-\-help\fR -Output a brief help and exit. - -.TP -.B \-\-version -Show the version number and exit. - -.SH CONFIGURATION FILE - -Unless told otherwise by the \fB\-\-config=\fR\fIFILE\fR option, -\fBPullIMAP\fR reads its configuration from -\fI$XDG_CONFIG_HOME/pullimap\fR (or \fI~/.config/pullimap\fR if the -XDG_CONFIG_HOME environment variable is unset) as an INI file. -The syntax of the configuration file is a series of -\fIOPTION\fR=\fIVALUE\fR lines organized under some \fI[SECTION]\fR; -lines starting with a \(oq#\(cq or \(oq;\(cq character are ignored as -comments. -Valid options are: - -.TP -.I statefile -State file to use to keep track of the \fImailbox\fR's UIDVALIDITY and -UIDNEXT values. -Relative paths start from \fI$XDG_DATA_HOME/pullimap\fR, or -\fI~/.local/share/pullimap\fR if the XDG_DATA_HOME environment variable -is unset. -(Default: \(lq\fISECTION\fR\)\(rq, where \fISECTION\fR is the section -name of the option.) - -.TP -.I mailbox -The IMAP mailbox to pull messages from. -Support for persistent message Unique Identifiers (UID) is required. -(Default: \(lqINBOX\)\(rq.) - -.TP -.I deliver\-method -\fR\fIprotocol\fR:\fI[address]\fI\fR:\fIport\fR where to deliver -messages. Both SMTP [RFC 5321] and LMTP [RFC 2030] are supported. -(Default: \(lqsmtp:[127.0.0.1]:25\)\(rq.) - -.TP -.I deliver\-ehlo -Hostname to use in EHLO or LHLO commands. -(Default: \(lq\fIlocalhost.localdomain\fR\)\(rq.) - - -.TP -.I deliver\-rcpt -Message recipient. -(Default: the username associated with the effective uid of the -\fBpullimap\fR process.) - -.TP -.I purge\-after -Retention period (in days), after which messages are removed from the -IMAP server. (The value is at best 24h accurate due to IMAP SEARCH -criterion ignoring time and timezone.) -If \fIpurge\-after\fR is set to \(lq0\(rq then messages are deleted -immediately after delivery. Otherwise \fBPullIMAP\fR issues an IMAP -SEARCH command to list old messages; if \fB\-\-idle\fR is set then the -SEARCH command is issued again every 12 hours. - -.TP -.I type -One of \(lqimap\(rq, \(lqimaps\(rq or \(lqtunnel\(rq. -\fItype\fR=imap and \fItype\fR=imaps are respectively used for IMAP and -IMAP over SSL/TLS connections over a INET socket. -\fItype\fR=tunnel causes \fBPullIMAP\fR to open a pipe to a -\fIcommand\fR instead of a raw socket. -Note that specifying \fItype\fR=tunnel in the \(lq[remote]\(rq section -makes the default \fIdatabase\fR to be \(lqlocalhost.db\(rq. -(Default: \(lqimaps\(rq.) - -.TP -.I host -Server hostname, for \fItype\fR=imap and \fItype\fR=imaps. -(Default: \(lqlocalhost\(rq.) - -.TP -.I port -Server port. -(Default: \(lq143\(rq for \fItype\fR=imap, \(lq993\(rq for -\fItype\fR=imaps.) - -.TP -.I proxy -An optional SOCKS proxy to use for TCP connections to the IMAP server -(\fItype\fR=imap and \fItype\fR=imaps only), formatted as -\(lq\fIprotocol\fR://[\fIuser\fR:\fIpassword\fR@]\fIproxyhost\fR[:\fIproxyport\fR]\(rq. -If \fIproxyport\fR is omitted, it is assumed at port 1080. -Only SOCKSv5 is supported, in two flavors: \(lqsocks5://\(rq to resolve -\fIhostname\fR locally, and \(lqsocks5h://\(rq to let the proxy resolve -\fIhostname\fR. - -.TP -.I command -Command to use for \fItype\fR=tunnel. Must speak the IMAP4rev1 protocol -on its standard output, and understand it on its standard input. - -.TP -.I STARTTLS -Whether to use the \(lqSTARTTLS\(rq directive to upgrade to a secure -connection. Setting this to \(lqYES\(rq for a server not advertising -the \(lqSTARTTLS\(rq capability causes \fBPullIMAP\fR to immediately -abort the connection. -(Ignored for \fItype\fRs other than \(lqimap\(rq. Default: \(lqYES\(rq.) - -.TP -.I auth -Space\-separated list of preferred authentication mechanisms. -\fBPullIMAP\fR uses the first mechanism in that list that is also -advertised (prefixed with \(lqAUTH=\(rq) in the server's capability list. -Supported authentication mechanisms are \(lqPLAIN\(rq and \(lqLOGIN\(rq. -(Default: \(lqPLAIN LOGIN\(rq.) - -.TP -.I username\fR, \fIpassword\fR -Username and password to authenticate with. Can be required for non -pre\-authenticated connections, depending on the chosen authentication -mechanism. - -.TP -.I compress -Whether to use the IMAP COMPRESS extension [RFC4978] for servers -advertising it. -(Default: \(lqYES\(rq.) - -.TP -.I null\-stderr -Whether to redirect \fIcommand\fR's standard error to \(lq/dev/null\(rq -for type \fItype\fR=tunnel. -(Default: \(lqNO\(rq.) - -.TP -.I SSL_protocols -A space-separated list of SSL protocols to enable or disable (if -prefixed with an exclamation mark \(oq!\(cq). Known protocols are -\(lqSSLv2\(rq, \(lqSSLv3\(rq, \(lqTLSv1\(rq, \(lqTLSv1.1\(rq, and -\(lqTLSv1.2\(rq. Enabling a protocol is a short-hand for disabling all -other protocols. -(Default: \(lq!SSLv2 !SSLv3\(rq, i.e., only enable TLSv1 and above.) - -.TP -.I SSL_cipher_list -The cipher list to send to the server. Although the server determines -which cipher suite is used, it should take the first supported cipher in -the list sent by the client. See \fBciphers\fR(1ssl) for more -information. - -.TP -.I SSL_fingerprint -Fingerprint of the server certificate (or its public key) in the form -\fIALGO\fR$\fIDIGEST_HEX\fR, where \fIALGO\fR is the used algorithm -(default \(lqsha256\(rq). -Attempting to connect to a server with a non-matching certificate -fingerprint causes \fBPullIMAP\fR to abort the connection during the -SSL/TLS handshake. - -.TP -.I SSL_verify -Whether to verify the server certificate chain. -Note that using \fISSL_fingerprint\fR to specify the fingerprint of the -server certificate is an orthogonal authentication measure as it ignores -the CA chain. -(Default: \(lqYES\(rq.) - -.TP -.I SSL_CApath -Directory to use for server certificate verification if -\(lq\fISSL_verify\fR=YES\(rq. -This directory must be in \(lqhash format\(rq, see \fBverify\fR(1ssl) -for more information. - -.TP -.I SSL_CAfile -File containing trusted certificates to use during server certificate -authentication if \(lq\fISSL_verify\fR=YES\(rq. - -.SH CONTROL FLOW -\fBPullIMAP\fR opens the \fIstatefile\fR corresponding to a given -configuration \fISECTION\fR with O_DSYNC to ensure that written data is -flushed to the underlying hardware by the time \fIwrite\fR(2) returns. -Moreover an exclusive lock is placed on the file descriptor immediately -after opening to prevent multiple \fBpullimap\fR processes from -accessing the \fIstatefile\fR concurrently. - -Each \fIstatefile\fR consists of a series of 32-bits big-endian -integers. Usually there are only two integers: -the first is the \fImailbox\fR's UIDVALIDITY value, and the second is -the \fImailbox\fR's last seen UIDNEXT value (\fBPullIMAP\fR then assumes -that all messages with UID smaller than this UIDNEXT value have already -been retrieved and delivered). -The IMAP4rev1 specification [RFC 3501] does not guaranty that untagged -FETCH responses are sent ordered by UID in response of an UID FETCH -command. Thus it would be unsafe for \fBPullIMAP\fR to update the -UIDNEXT value in the \fIstatefile\fR while the UID FETCH command is -progress. -Instead, for each untagged FETCH response received while while the UID -FETCH command is in progress, \fBPullIMAP\fR delivers the message BODY -to the SMTP or LMTP server specified with \fIdeliver\-method\fR then -appends the message UID to the \fIstatefile\fR. When the UID FETCH -command eventually terminates, \fBPullIMAP\fR updates the UIDNEXT value -in the \fIstatefile\fR and truncate the file down to 8 bytes. -Keeping track of message UIDs as they are received avoids duplicate in -the even of a crash or session loss while the UID FETCH command is in -progress. - -In more details, \fBPullIMAP\fR works as follows: - -.nr step 1 1 -.IP \n[step]. 4 -Issue an UID FETCH command to retrieve message ENVELOPE and BODY (and -UID) with UID bigger or equal than the UIDNEXT value found in the -\fIstatefile\fR. -While the UID FETCH command is in progress, perform the following -for each untagged FETCH response sent by the server: -.RS -\(bu -if no SMTP/LMTP transmission channel was opened, open one to the server -specified with \fIdeliver\-method\fR and send an EHLO (or LHO) command -with the domain given by \fIdeliver\-ehlo\fR; -.br -\(bu -perform a mail transaction (using SMTP pipelining [RFC 2920] if -possible) to send the retrieved message BODY to the SMTP or LMTP -session; and -.br -\(bu -append the message UID to the \fIstatefile\fR. -.RE - -.IP \n+[step]. -If a SMTP/LMTP transmission channel was opened, send a QUIT command to -close it gracefully. - -.IP \n+[step]. -Issue an UID STORE command to mark all retrieved messages (and stalled -UIDs found in the \fIstatefile\fR after the UIDNEXT value) as \\Seen. - -.IP \n+[step]. -Update the \fIstatefile\fR with the new UIDNEXT value. - -.IP \n+[step]. -Truncate the \fIstatefile\fR down to 8 bytes (so that it contains only -two 32-bits integers, respectively the \fImailbox\fR's UIDVALIDITY and -UIDNEXT values). - -.IP \n+[step]. -If \fB\-\-idle\fR was set, issue an IDLE command; stop idling and go -back to step 1. whenever a new message is received. - -.SH AUTHOR -.ie \n[www-html] \{\ - Written by -. MTO guilhem@fripost.org "Guilhem Moulin" . -\} -.el \{\ - Written by Guilhem Moulin -. MT guilhem@fripost.org -. ME . -\} |