Problems adding Getmail to the Postfix / mySQL / Dovecot mix
Email with Postfix, Dovecot, and MySQL
However, there's just one more step which I need to crack before declaring victory…
I'm now ready to switch my 'main' domain over to using my new mailserver setup. However, it has 3 IMAP user ccounts on it [including my own email account which has a couple of thousand messages]. I don't want to lose all my old correspondence and am looking for a way to bring the old email with me when I switch servers. From what I've gleaned from the intarwebs, it would seem that one way to do this would be to use getmail to retrieve the emails from my current mailserver and pass them to Dovecot on my new setup, which would then distribute them to the appropriate mailboxes.
I've got getmail config set up as follows:
[retriever] type = SimpleIMAPSSLRetriever server = imap.yandex.com port = 993 username = [email protected] password = xxxxxxx [destination] type = MDA_external path = /usr/lib/dovecot/deliver arguments = ("-e", "-f", "%(sender)", "-d", "%(recipient)") user = getmail group = getmail [options] delete = false message_log = ~/.getmail/xxx.log
when I run getmail I can see that it successfully connects to the server and begins downloading to my Linode. I can see the messages downloading when I 'tail' the getmail log file. However there seems to be a permissions problem with the actual 'deliver' command:
2015-03-07 13:58:04 msg 3/7223 (9615 bytes) msgid 1418515470/12 from <[email protected]>2015-03-07 13:58:05 Delivery error (command deliver 27920 error (127, exec of command deliver failed (change UID/GID to 5001/5001 failed ([Errno 1] Operation not permitted)))) 2015-03-07 13:58:05 msg 4/7223 (1722 bytes) msgid 1418515470/13 from <[email protected]>2015-03-07 13:58:05 Delivery error (command deliver 27921 error (127, exec of command deliver failed (change UID/GID to 5001/5001 failed ([Errno 1] Operation not permitted))))</[email protected]></[email protected]>
UID/GID 5001 referred to in the error messages is getmail
Thinking that maybe user/group in my getmail config was wrong, I changed that to
... user = dovecot group = postfix ...
But got a similar error. This time with the UID/GIDs of dovecot and :postfix instead
So, I'm not really sure where I go from here. As per the article I referenced above, my mail should be being moved to /var/mail/vhosts/domain.com which is owned by vmail:vmail. I tried adding getmail, dovecot and postfix to the :vmail group to see if that would allow them to play nicely together [although postfix and dovecot seem to be managing their side of things OK, without belonging to any other groups] –but that didn't help either.
Any pointers anyone? Even an explanation of the getmail error messages would help. At least then I'd narrow down at what stage of the "email pass-the-parcel" game the problems were arising.
I seem to have managed to get this working by copying all the getmail config over to 'root's' ~/ dir and then su root-ing and running getmail as root.
Doubtless a dumb thing to do but, as I'm only planning to run getmail once, to mgrate my old email over to my Linode, I'll risk it and then remove it!
I also simplified my getmail config to just chuck everything directly into the Maildir, rather than filtering it through Dovecot.
[retriever] type = SimpleIMAPSSLRetriever server = imap.yandex.com port = 993 username = [email protected] password = xxxxxxxx [destination] user = vmail group = vmail type = Maildir path = /var/mail/vhosts/domain.com/username/ [options] delete = false message_log = ~/.getmail/log-domain.com