msmtp already has the capacity to read passwords from a ~/.netrc file.
However, I'd prefer to keep the password in /etc/netrc, because I have a number
of system-level daemons and cron jobs emailing me. They won't know what
user to get the password from. I propose the following patch against
msmtp 1.4.16, which tells msmtp to check for a /etc/netrc file if it
can't find one at ~/.netrc.



--- msmtp-1.4.16.orig/src/msmtp.c       2008-06-02 20:02:26.000000000 -0400
+++ msmtp-1.4.16.new/src/msmtp.c        2008-08-23 14:19:31.000000000 -0400
@@ -90,6 +90,7 @@
 #define USERCONFFILE   ".msmtprc"
 #define NETRCFILE      ".netrc"
 #endif
+#define SYSNETRCFILE "netrc"
 
 /* The name of this program */
 const char *prgname;
@@ -283,6 +284,7 @@
 char *msmtp_password_callback(const char *hostname, const char *user)
 {
     char *homedir;
+    char *sysconfdir;
     char *netrc_filename;
     netrc_entry *netrc_hostlist;
     netrc_entry *netrc_host;
@@ -308,10 +310,24 @@
        }
        free_netrc_entry_list(netrc_hostlist);
     }
+       if (!password)
+       {
+               sysconfdir = get_sysconfdir();
+               netrc_filename = get_filename(sysconfdir, SYSNETRCFILE);
+               free(sysconfdir);
+               if ((netrc_hostlist = parse_netrc(netrc_filename)))
+               {
+               if ((netrc_host = search_netrc(netrc_hostlist, hostname, user)))
+               {
+                       password = xstrdup(netrc_host->password);
+               }
+               free_netrc_entry_list(netrc_hostlist);
+               }
+       }
     free(netrc_filename);
 
 #ifdef HAVE_KEYCHAIN
-    if (SecKeychainFindInternetPassword(
+    if (!password && SecKeychainFindInternetPassword(
                NULL,
                strlen(hostname), hostname,
                0, NULL,


-- 
Jim Pryor
[EMAIL PROTECTED]

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
msmtp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/msmtp-users

Reply via email to