Public bug reported:

Protonmail-Hydroxide users are inconvenienced with having to manually
execute this command prior to running fetchmail:

$ torsocks hydroxide imap

The fetchmailrc stanza looks like this:

skip protonmail-hydroxide via 127.0.0.1
        protocol  imap
        port      1143
        username  "billyikes"
        sslproto  ''
        fetchall

The workflow above functions, but it's a nuissance to have to execute a
daemon manually before running fetchmail.  In principle, it would be
ideal to add: 'plugin "torsocks hydroxide imap"', but the problem is
that fetchmail has the limitation of having to interact with plugins
through standard I/O, which is unsupported by hydroxide.

I suggest adding the following options:

stdio <boolean>
plugin_is_a_daemon <boolean>
kill_plugin <boolean>

If the stdio boolean is true, then the plugin mechanism works the way it
always has.  If the boolean is false, then fetchmail connects to the IP
and port given in the stanza.

If plugin_is_a_daemon is true, then fetchmail should check whether the
process is already running and if not fetchmail should launch it and
disown it before fetching the mail.

If kill_plugin is true, fetchmail should kill the plugin after each
fetch.

Perhaps those 3 options could be consolidated into fewer options but I'm
merely brainstorming the degree of control that would be useful to
users.

*Alternatively*

Perhaps there is a hack that avoids a fetchmail code change.  For
example, would it work to layer in socat alongside hydroxide? Such as:

plugin "torsocks hydroxide imap & socat STDIO TCP:127.0.0.1:%h:%p"

I'm not real proficient with socat (it's very complex), but if there is
a way to launch hydroxide and combine socat as middleware to keep
fetchmail code simple, then this feature request could boil down to
simply adding an example of a hydroxide configuration to the man page.

FYI, Hydroxide lives here: https://github.com/emersion/hydroxide

BTW, I know the upstream tracker is normally the appropriate place for
feature requests, but gitlab.com is inaccessible to myself and probably
many others (largely people using Tor or whose ISP uses CGNAT).  So I've
posted it here just to get it on record, in hopes that an upstream
developer sees it.

** Affects: fetchmail (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  Protonmail-Hydroxide users are inconvenienced with having to manually
  execute this command prior to running fetchmail:
  
  $ torsocks hydroxide imap
  
  The fetchmailrc stanza looks like this:
  
  skip protonmail-hydroxide via 127.0.0.1
-         protocol  imap
-         port      1143
-         username  "billyikes"
-         sslproto  ''
-         fetchall
+         protocol  imap
+         port      1143
+         username  "billyikes"
+         sslproto  ''
+         fetchall
  
  The workflow above functions, but it's a nuissance to have to execute a
  daemon manually before running fetchmail.  In principle, it would be
  ideal to add: 'plugin "torsocks hydroxide imap"', but the problem is
- that fetchmail has the limitation of having to use standard I/O, which
- is unsupported by hydroxide.
+ that fetchmail has the limitation of having to interact with plugins
+ through standard I/O, which is unsupported by hydroxide.
  
  I suggest adding the following options:
  
  stdio <boolean>
  plugin_is_a_daemon <boolean>
  kill_plugin <boolean>
  
  If the stdio boolean is true, then the plugin mechanism works the way it
  always has.  If the boolean is false, then fetchmail connects to the IP
  and port given in the stanza.
  
  If plugin_is_a_daemon is true, then fetchmail should check whether the
  process is already running and if not fetchmail should launch it and
  disown it before fetching the mail.
  
  If kill_plugin is true, fetchmail should kill the plugin after each
  fetch.
  
  Perhaps those 3 options could be consolidated into fewer options but I'm
  merely brainstorming the degree of control that would be useful to
  users.
  
  *Alternatively*
  
  Perhaps there is a hack that avoids a fetchmail code change.  For
  example, would it work to layer in socat alongside hydroxide? Such as:
  
  plugin "torsocks hydroxide imap & socat STDIO TCP:127.0.0.1:%h:%p"
  
  I'm not real proficient with socat (it's very complex), but if there is
  a way to launch hydroxide and combine socat as middleware to keep
  fetchmail code simple, then this feature request could boil down to
  simply adding an example of a hydroxide configuration to the man page.
  
  FYI, Hydroxide lives here: https://github.com/emersion/hydroxide

** Description changed:

  Protonmail-Hydroxide users are inconvenienced with having to manually
  execute this command prior to running fetchmail:
  
  $ torsocks hydroxide imap
  
  The fetchmailrc stanza looks like this:
  
  skip protonmail-hydroxide via 127.0.0.1
          protocol  imap
          port      1143
          username  "billyikes"
          sslproto  ''
          fetchall
  
  The workflow above functions, but it's a nuissance to have to execute a
  daemon manually before running fetchmail.  In principle, it would be
  ideal to add: 'plugin "torsocks hydroxide imap"', but the problem is
  that fetchmail has the limitation of having to interact with plugins
  through standard I/O, which is unsupported by hydroxide.
  
  I suggest adding the following options:
  
  stdio <boolean>
  plugin_is_a_daemon <boolean>
  kill_plugin <boolean>
  
  If the stdio boolean is true, then the plugin mechanism works the way it
  always has.  If the boolean is false, then fetchmail connects to the IP
  and port given in the stanza.
  
  If plugin_is_a_daemon is true, then fetchmail should check whether the
  process is already running and if not fetchmail should launch it and
  disown it before fetching the mail.
  
  If kill_plugin is true, fetchmail should kill the plugin after each
  fetch.
  
  Perhaps those 3 options could be consolidated into fewer options but I'm
  merely brainstorming the degree of control that would be useful to
  users.
  
  *Alternatively*
  
  Perhaps there is a hack that avoids a fetchmail code change.  For
  example, would it work to layer in socat alongside hydroxide? Such as:
  
  plugin "torsocks hydroxide imap & socat STDIO TCP:127.0.0.1:%h:%p"
  
  I'm not real proficient with socat (it's very complex), but if there is
  a way to launch hydroxide and combine socat as middleware to keep
  fetchmail code simple, then this feature request could boil down to
  simply adding an example of a hydroxide configuration to the man page.
  
  FYI, Hydroxide lives here: https://github.com/emersion/hydroxide
+ 
+ BTW, I know the upstream tracker is normally the appropriate place for
+ feature requests, but gitlab.com is inaccessible to myself and probably
+ many others (largely people using Tor or whose ISP uses CGNAT).  So I've
+ posted it here just to get it on record, in hopes that an upstream
+ developer sees it.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1938719

Title:
  (feature request) support for non-stdio plugins (like Hydroxide)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/fetchmail/+bug/1938719/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to