[Dovecot] dsync ignores ssh-agent

Mark Hills mark at xwax.org
Sat Oct 13 00:20:03 EEST 2012


I use IMAP over SSH, in pre-auth. I wanted to use dsync to offline mail to 
my laptop.

dsync v2.1.10 would always ask for my SSH key/passphrase, ignoring 
ssh-agent. The culprit is the env_clean() in the stack below.

Reading the source, I saw DOVECOT_PRESERVE_ENVS. When used as follows in 
my script it enables dsync to find my ssh-agent:

  export DOVECOT_PRESERVE_ENVS="SSH_AGENT_PID SSH_AUTH_SOCK"
  dsync mirror ssh imap.example.com /home/mark/opt/dovecot/bin/dsync

and it now works without asking for password every time.

I'm posting here so that anyone else googling for the same problem will 
hopefully find this, as I couldn't find anything about this in the docs.

Also I'm interested in why dsync so aggressively cleans the environment; I 
tried a naive removal of env_clean() but this breaks basic functions.

With this dsync is working very well for offline mail -- combined with 
alpine and a local exim for the outbound queue :) Thanks

-- 
Mark


Breakpoint 2, env_clean () at env-util.c:59
59              if (clearenv() < 0)
(gdb) bt
#0  env_clean () at env-util.c:59
#1  0xb7df10fc in master_service_env_clean () at master-service.c:454
#2  0xb7df26d4 in master_service_exec_config (service=0x809e7d0, 
    input=0xbffff7e4) at master-service-settings.c:103
#3  0xb7df29be in config_exec_fallback (service=0x809e7d0, input=0xbffff7e4)
    at master-service-settings.c:153
#4  0xb7df2b65 in master_service_open_config (service=0x809e7d0, 
    input=0xbffff7e4, path_r=0xbffff780, error_r=0xbffff7d8)
    at master-service-settings.c:206
#5  0xb7df3130 in master_service_settings_read (service=0x809e7d0, 
    input=0xbffff7e4, output_r=0xbffff7dc, error_r=0xbffff7d8)
    at master-service-settings.c:345
#6  0x0805c672 in doveadm_read_settings () at doveadm.c:275
#7  0x0805c7d6 in main (argc=5, argv=0x809e1c0) at doveadm.c:342


More information about the dovecot mailing list