X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fcitmail.c;h=2f1bdc2a12ad78f3dd6bf7d5e2314ae63c624e40;hb=4eb74b26380dfde31c86c685f0589e0c653aebf0;hp=f5c8da25de62385fb8de5fcc04c85a795b1dea23;hpb=a2a06e5d6767d0e45eeccf4032153764e8a5520f;p=citadel.git diff --git a/citadel/citmail.c b/citadel/citmail.c index f5c8da25d..2f1bdc2a1 100644 --- a/citadel/citmail.c +++ b/citadel/citmail.c @@ -5,6 +5,21 @@ * some other non-Citadel MTA. It basically just contacts the Citadel LMTP * listener on a unix domain socket and transmits the message. * + * Copyright (c) 1987-2009 by the citadel.org team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdep.h" @@ -22,8 +37,8 @@ #include #include #include +#include #include "citadel.h" -#include "tools.h" #ifndef HAVE_SNPRINTF #include "snprintf.h" #endif @@ -56,13 +71,13 @@ int uds_connectsock(char *sockpath) s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { - fprintf(stderr, "Can't create socket: %s\n", + fprintf(stderr, "citmail: Can't create socket: %s\n", strerror(errno)); exit(3); } if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { - fprintf(stderr, "can't connect: %s\n", + fprintf(stderr, "citmail: can't connect: %s\n", strerror(errno)); close(s); exit(3); @@ -154,7 +169,8 @@ void cleanup(int exitcode) { char buf[1024]; if (exitcode != 0) { - fprintf(stderr, "Error while sending mail. Please check your Citadel configuration.\n"); + fprintf(stderr, "citmail: error #%d occurred while sending mail.\n", exitcode); + fprintf(stderr, "Please check your Citadel configuration.\n"); } serv_puts("QUIT"); serv_gets(buf); @@ -198,7 +214,7 @@ int main(int argc, char **argv) { } /* TODO: should we be able to calculate relative dirs? */ - calc_dirs_n_files(relh, home, relhome, ctdldir); + calc_dirs_n_files(relh, home, relhome, ctdldir, 0); pw = getpwuid(getuid()); @@ -207,18 +223,19 @@ int main(int argc, char **argv) { serv_sock = uds_connectsock(file_lmtp_socket); /* FIXME: if called as 'sendmail' connect to file_lmtp_unfiltered_socket */ serv_gets(buf); if (buf[0] != '2') { - if (debug) fprintf(stderr, "Could not connect to LMTP socket.\n"); + fprintf(stderr, "%s\n", &buf[4]); + if (debug) fprintf(stderr, "citmail: could not connect to LMTP socket.\n"); cleanup(1); } sp = strchr (buf, ' '); if (sp == NULL) { - if (debug) fprintf(stderr, "Could not calculate hostname.\n"); - cleanup(1); + if (debug) fprintf(stderr, "citmail: ould not calculate hostname.\n"); + cleanup(2); } sp ++; ep = strchr (sp, ' '); - if (ep == NULL) cleanup(1); + if (ep == NULL) cleanup(3); *ep = '\0'; strncpy(hostname, sp, sizeof hostname); @@ -230,11 +247,9 @@ int main(int argc, char **argv) { fprintf(fp, "%s%s", fromline, buf); } } - if (!strncasecmp(buf, "From:", 5)) { + if (in_body == 0 && !strncasecmp(buf, "From:", 5)) { strcpy(fromline, buf); - if (in_body == 0) { - from_header = 1; - } + from_header = 1; } if (read_recipients_from_headers) { @@ -283,12 +298,12 @@ int main(int argc, char **argv) { serv_gets(buf); strcat(buf, " "); } while (buf[3] == '-'); - if (buf[0] != '2') cleanup(1); + if (buf[0] != '2') cleanup(4); snprintf(buf, sizeof buf, "MAIL %s", fromline); serv_puts(buf); serv_gets(buf); - if (buf[0] != '2') cleanup(1); + if (buf[0] != '2') cleanup(5); for (i=0; i