aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changelog6
-rw-r--r--README2
-rw-r--r--interimap.md25
-rw-r--r--lib/Net/IMAP/InterIMAP.pm4
-rwxr-xr-xpullimap2
-rw-r--r--pullimap.md25
-rw-r--r--pullimap@.service2
7 files changed, 32 insertions, 34 deletions
diff --git a/Changelog b/Changelog
index b9d08a8..c1e996c 100644
--- a/Changelog
+++ b/Changelog
@@ -10,7 +10,7 @@ interimap (0.5) upstream;
namespace.
* libinterimap: in tunnel mode, use a socketpair rather than two pipes
for IPC between the interimap and the IMAP server. Also, use
- SOCK_CLOEXEC to save a fcntl() call when setting the close-on-exec
+ SOCK_CLOEXEC to save an fcntl() call when setting the close-on-exec
flag on the socket.
* interimap: new option 'list-reference' to specify a reference name.
This is useful for synchronizing multiple remote servers against
@@ -18,7 +18,7 @@ interimap (0.5) upstream;
different InterIMAP instance for each local namespace <-> remote
synchronization, for instance with the newly provided systemd
template unit file).
- * Add a small test-suite (requires dovecot-imapd).
+ * Add a test-suite. (Requires dovecot-imapd, pkill(1) and xxd(1).)
+ interimap: write which --target to use in --delete command
suggestions.
+ interimap: avoid caching hierarchy delimiters forever in the
@@ -90,7 +90,7 @@ interimap (0.4) upstream;
interimap (0.3) upstream;
+ New script 'pullimap', to pull mails from an IMAP mailbox and
- deliver them to a SMTP session.
+ deliver them to an SMTP session.
+ Convert manpage format from groff to pandoc.
+ interimap: Add support for IMAP NOTIFY [RFC 5465].
+ 'fingerprint' now only pins the cert's SPKI, not the cert itself
diff --git a/README b/README
index 06f328f..a930512 100644
--- a/README
+++ b/README
@@ -39,7 +39,7 @@ IMAP traffic is mostly text (beside message bodies perhaps) hence
compresses pretty well: enabling compression can save a great amount of
network resources.
-However establishing a SSL/TLS connection (type=imaps, or type=imap and
+However establishing an SSL/TLS connection (type=imaps, or type=imap and
STARTTLS=YES) yields a small overhead due to the SSL/TLS handshake.
On the other hand if SSH access is allowed on the remote server, one can
diff --git a/interimap.md b/interimap.md
index 4744170..387850a 100644
--- a/interimap.md
+++ b/interimap.md
@@ -47,7 +47,7 @@ with the [RFC 7162] (sec. 6) amendments, and works as follows:
2. Propagate these changes onto the other server: get the corresponding
UIDs from the database, then:
- a. issue an `UID STORE` command, followed by `UID EXPUNGE`, to
+ a. issue a `UID STORE` command, followed by `UID EXPUNGE`, to
remove messages that have not already been deleted on both
servers; and
b. issue some `UID STORE` commands to propagate flag updates (send
@@ -62,9 +62,9 @@ with the [RFC 7162] (sec. 6) amendments, and works as follows:
Otherwise, update the `HIGHESTMODSEQ` value in the database.
3. Process new messages (if the current `UIDNEXT` value of the mailbox
- differs from the one found in the database) by issuing an `UID
- FETCH` command; process each received message on-the-fly by issuing
- an `APPEND` command with the message's `RFC822` body, `FLAGS` and
+ differs from the one found in the database) by issuing a `UID FETCH`
+ command; process each received message on-the-fly by issuing an
+ `APPEND` command with the message's `RFC822` body, `FLAGS` and
`INTERNALDATE`.
Repeat this step if the server received new messages in the
meantime. Otherwise, update the `UIDNEXT` value in the database.
@@ -111,8 +111,8 @@ other than the default [`QRESYNC`][RFC 7162]-based synchronization.
existing UID; and
3/ ensure that both flag lists match.
Any message found on a server but not in the database is replicated
- on the other server (which in the worst case, might lead to a
- message duplicate).
+ on the other server (which in the worst case, might yield a message
+ duplicate).
Flag conflicts are solved by updating each message to the union of
both lists.
@@ -224,7 +224,7 @@ Valid options are:
to the `perso/` sub-hierarchy on the local server. This is useful
for synchronizing multiple remote servers against different
namespaces belonging to the same local IMAP server (using a
- different InterIMAP instance for each local namespace ↔ remote
+ different `interimap` instance for each local namespace ↔ remote
synchronization).
(Note that if the reference name is not a level of mailbox hierarchy
@@ -281,10 +281,10 @@ Valid options are:
: One of `imap`, `imaps` or `tunnel`.
`type=imap` and `type=imaps` are respectively used for IMAP and IMAP
- over SSL/TLS connections over a INET socket.
+ over SSL/TLS connections over an INET socket.
`type=tunnel` causes `interimap` to create an unnamed pair of
connected sockets for interprocess communication with a *command*
- instead of a opening a network socket.
+ instead of opening a network socket.
Note that specifying `type=tunnel` in the `[remote]` section makes
the default *database* to be `localhost.db`.
(Default: `imaps`.)
@@ -316,7 +316,7 @@ Valid options are:
protocol][RFC 3501] on its standard output, and understand it on its
standard input. The value is passed to `` `/bin/sh -c` `` if it
contains shell metacharacters; otherwise it is split into words and
- the list is passed to `execvp`(3).
+ the resulting list is passed to `execvp`(3).
*STARTTLS*
@@ -376,9 +376,8 @@ Valid options are:
Attempting to connect to a server with a non-matching certificate
SPKI fingerprint causes `interimap` to abort the connection during
the SSL/TLS handshake.
-
- You can use the following command to compute the SHA-256 digest of
- certificate's Subject Public Key Info.
+ The following command can be used to compute the SHA-256 digest of a
+ certificate's Subject Public Key Info:
openssl x509 -in /path/to/server/certificate.pem -pubkey \
| openssl pkey -pubin -outform DER \
diff --git a/lib/Net/IMAP/InterIMAP.pm b/lib/Net/IMAP/InterIMAP.pm
index 111537c..19895c4 100644
--- a/lib/Net/IMAP/InterIMAP.pm
+++ b/lib/Net/IMAP/InterIMAP.pm
@@ -611,7 +611,7 @@ sub incapable($@) {
# $self->search($criterion)
-# Issue an UID SEARCH command with the given $criterion. For the "normal"
+# Issue a UID SEARCH command with the given $criterion. For the "normal"
# UID SEARCH command from RFC 3501, return the list of matching UIDs;
# for the extended UID SEARCH command from RFC 4731 (ensuring ESEARCH
# capability is the caller's responsibility), return an optional "UID"
@@ -922,7 +922,7 @@ sub append($$@) {
# $self->fetch($set, $flags, [$callback])
-# Issue an UID FETCH command with the given UID $set, $flags, and
+# Issue a UID FETCH command with the given UID $set, $flags, and
# optional $callback.
sub fetch($$$;&) {
my ($self, $set, $flags, $callback) = @_;
diff --git a/pullimap b/pullimap
index 84587fe..e1c96e8 100755
--- a/pullimap
+++ b/pullimap
@@ -1,7 +1,7 @@
#!/usr/bin/perl -T
#----------------------------------------------------------------------
-# Pull mails from an IMAP mailbox and deliver them to a SMTP session
+# Pull mails from an IMAP mailbox and deliver them to an SMTP session
# Copyright © 2016-2018 Guilhem Moulin <guilhem@fripost.org>
#
# This program is free software: you can redistribute it and/or modify
diff --git a/pullimap.md b/pullimap.md
index dd25571..1b2e509 100644
--- a/pullimap.md
+++ b/pullimap.md
@@ -5,7 +5,7 @@
Name
====
-PullIMAP - Pull mails from an IMAP mailbox and deliver them to a SMTP session
+PullIMAP - Pull mails from an IMAP mailbox and deliver them to an SMTP session
Synopsis
========
@@ -16,8 +16,8 @@ Synopsis
Description
===========
-`pullimap` retrieves messages from an IMAP mailbox and deliver them to a
-SMTP or LMTP transmission channel. It can also remove old messages
+`pullimap` retrieves messages from an IMAP mailbox and deliver them to
+an SMTP or LMTP transmission channel. It can also remove old messages
after a configurable retention period.
A *statefile* is used to keep track of the mailbox's `UIDVALIDITY` and
@@ -130,10 +130,10 @@ Valid options are:
: One of `imap`, `imaps` or `tunnel`.
`type=imap` and `type=imaps` are respectively used for IMAP and IMAP
- over SSL/TLS connections over a INET socket.
+ over SSL/TLS connections over an INET socket.
`type=tunnel` causes `pullimap` to create an unnamed pair of
connected sockets for interprocess communication with a *command*
- instead of a opening a network socket.
+ instead of opening a network socket.
(Default: `imaps`.)
*host*
@@ -163,7 +163,7 @@ Valid options are:
protocol][RFC 3501] on its standard output, and understand it on its
standard input. The value is passed to `` `/bin/sh -c` `` if it
contains shell metacharacters; otherwise it is split into words and
- the list is passed to `execvp`(3).
+ the resulting list is passed to `execvp`(3).
*STARTTLS*
@@ -221,9 +221,8 @@ Valid options are:
Attempting to connect to a server with a non-matching certificate
SPKI fingerprint causes `pullimap` to abort the connection during
the SSL/TLS handshake.
-
- You can use the following command to compute the SHA-256 digest of
- certificate's Subject Public Key Info.
+ The following command can be used to compute the SHA-256 digest of a
+ certificate's Subject Public Key Info:
openssl x509 -in /path/to/server/certificate.pem -pubkey \
| openssl pkey -pubin -outform DER \
@@ -266,7 +265,7 @@ Usually there are only two integers: the first is the *mailbox*'s
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 to an `UID FETCH`
+`FETCH` responses are sent ordered by UID in response to a `UID FETCH`
command. Thus it would be unsafe for `pullimap` to update the `UIDNEXT`
value in its *statefile* while the `UID FETCH` command is progress.
Instead, for each untagged `FETCH` response received while the `UID
@@ -281,7 +280,7 @@ FETCH` command is in progress.
In more details, `pullimap` works as follows:
- 1. Issue an `UID FETCH` command to retrieve message `ENVELOPE` and
+ 1. Issue a `UID FETCH` command to retrieve message `ENVELOPE` and
`RFC822` (and `UID`) with UID bigger or equal than the `UIDNEXT`
value found in the *statefile*.
While the `UID FETCH` command is in progress, perform the following
@@ -299,10 +298,10 @@ In more details, `pullimap` works as follows:
i. append the message UID to the *statefile*.
- 2. If a SMTP/LMTP transmission channel was opened, send a `QUIT` command
+ 2. If an SMTP/LMTP transmission channel was opened, send a `QUIT` command
to terminate it gracefully.
- 3. Issue an `UID STORE` command to mark all retrieved messages (and
+ 3. Issue a `UID STORE` command to mark all retrieved messages (and
stalled UIDs found in the *statefile* after the eigth byte) as
`\Seen`.
diff --git a/pullimap@.service b/pullimap@.service
index 53694da..a9ce09a 100644
--- a/pullimap@.service
+++ b/pullimap@.service
@@ -1,5 +1,5 @@
[Unit]
-Description=Pull mails from an IMAP mailbox and deliver them to a SMTP session (instance %i)
+Description=Pull mails from an IMAP mailbox and deliver them to an SMTP session (instance %i)
Documentation=man:pullimap(1)
Wants=network-online.target
After=network-online.target