/[monit]/monit/sendmail.c
ViewVC logotype

Diff of /monit/sendmail.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by hauk, Fri Sep 6 18:13:37 2002 UTC revision 1.10 by hauk, Sat Dec 21 13:56:04 2002 UTC
# Line 77  static void do_send(const char *, ...); Line 77  static void do_send(const char *, ...);
77   */   */
78  void sendmail(Mail_T mail) {  void sendmail(Mail_T mail) {
79    
80    Mail_T p;    Mail_T m;
81    char *now = get_RFC1123date(NULL);    char *now = get_RFC1123date(NULL);
82    char *localhost= get_localhostname();    char *localhost= get_localhostname();
83      
84    if ( !initialize_server() ) {    if(!initialize_server()) {
85            
86      goto exit;      goto exit;
87    
88    }    }
89        
90    if ( sigsetjmp(die, TRUE) ) {    if(sigsetjmp(die, TRUE)) {
91    
92      goto exit;      goto exit;
93    
# Line 97  void sendmail(Mail_T mail) { Line 97  void sendmail(Mail_T mail) {
97    do_send("HELO %s\r\n", localhost);    do_send("HELO %s\r\n", localhost);
98    do_status();    do_status();
99    
100    for(p= mail; p; p= p->next) {    for(m= mail; m; m= m->next) {
101            
102      do_send("MAIL FROM: <%s>\r\n", p->from);      do_send("MAIL FROM: <%s>\r\n", m->from);
103      do_status();      do_status();
104      do_send("RCPT TO: <%s>\r\n", p->to);      do_send("RCPT TO: <%s>\r\n", m->to);
105      do_status();      do_status();
106      do_send("DATA\r\n");      do_send("DATA\r\n");
107      do_status();      do_status();
108      do_send("From: %s\r\n", p->from);      do_send("From: %s\r\n", m->from);
109      do_send("To: %s\r\n", p->to);      do_send("To: %s\r\n", m->to);
110      do_send("Subject: %s\r\n", p->subject);      do_send("Subject: %s\r\n", m->subject);
111      do_send("Date: %s\r\n", now);      do_send("Date: %s\r\n", now);
112      do_send("X-Mailer: %s %s\r\n", prog, VERSION);      do_send("X-Mailer: %s %s\r\n", prog, VERSION);
113      do_send("Mime-Version: 1.0\r\n");      do_send("Mime-Version: 1.0\r\n");
114      do_send("Content-Type: text/plain; charset=\"iso-8859-1\"\r\n");      do_send("Content-Type: text/plain; charset=\"iso-8859-1\"\r\n");
115      do_send("Content-Transfer-Encoding: quoted-printable\r\n");      do_send("Content-Transfer-Encoding: quoted-printable\r\n");
116      do_send("\r\n");      do_send("\r\n");
117      do_send("%s\r\n", p->message);      do_send("%s\r\n", m->message);
118      if(p->opt_message) do_send("%s\r\n", p->opt_message);      if(m->opt_message)
119            do_send("%s\r\n", m->opt_message);
120      do_send(".\r\n");      do_send(".\r\n");
121      do_status();      do_status();
122    
# Line 140  static int initialize_server() { Line 141  static int initialize_server() {
141        
142    struct sigaction sa;    struct sigaction sa;
143        
144    if ( (server= Run.mailserver) == NULL ) {    if((server= Run.mailserver) == NULL) {
145            
146      server= LOCALHOST;      server= LOCALHOST;
147            
# Line 152  static int initialize_server() { Line 153  static int initialize_server() {
153    sigaction(SIGALRM, &sa, NULL);    sigaction(SIGALRM, &sa, NULL);
154    alarm(SMTP_TIMEOUT);    alarm(SMTP_TIMEOUT);
155    
156    if ( (mysocket= create_socket(server, SMTP_PORT, SOCK_STREAM)) <0 ) {    if((mysocket= create_socket(server, SMTP_PORT, SOCK_STREAM)) <0) {
157    
158      log("Cannot open a connection to the mailserver '%s' -- %s\n",      log("Cannot open a connection to the mailserver '%s' -- %s\n",
159          server, STRERROR);          server, STRERROR);
# Line 170  static void finalize_server() { Line 171  static void finalize_server() {
171        
172    alarm(0);    alarm(0);
173        
174    if ( mysocket && !close_socket(mysocket) ) {    if(mysocket && !close_socket(mysocket)) {
175            
176      log("Error shutting down socket connection to mailserver %s -- %s\n",      log("Error shutting down socket connection to mailserver %s -- %s\n",
177          server, STRERROR);          server, STRERROR);
# Line 192  void do_send(const char *format, ...) { Line 193  void do_send(const char *format, ...) {
193        
194    char msg[2048];    char msg[2048];
195    va_list ap;    va_list ap;
196      
197    va_start(ap,format);    va_start(ap,format);
198    vsnprintf(msg, 2048, format, ap);    vsnprintf(msg, 2048, format, ap);
199    va_end(ap);    va_end(ap);
200        
201    if ( sock_send(mysocket, msg, strlen(msg), 0) <= 0 ) {    if(sock_send(mysocket, msg, strlen(msg), 0) <= 0) {
202            
203      log("Sendmail: error sending data to the server '%s' -- %s\n",      log("Sendmail: error sending data to the server '%s' -- %s\n",
204            server, STRERROR);            server, STRERROR);
# Line 212  static void do_status() { Line 214  static void do_status() {
214    int  status;    int  status;
215    char buf[STRLEN];    char buf[STRLEN];
216        
217    if ( sock_recv(mysocket, buf, sizeof(buf), 0) <= 0 ) {    if(sock_recv(mysocket, buf, sizeof(buf), 0) <= 0) {
218            
219      log("Sendmail: error receiving data from the mailserver '%s' -- %s\n",      log("Sendmail: error receiving data from the mailserver '%s' -- %s\n",
220          server, STRERROR);          server, STRERROR);
# Line 223  static void do_status() { Line 225  static void do_status() {
225    chomp(buf);    chomp(buf);
226        
227    sscanf(buf, "%d", &status);    sscanf(buf, "%d", &status);
228    if ( status >= 400 ) {    if(status >= 400) {
229            
230      log("Sendmail error: %s\n", buf);      log("Sendmail error: %s\n", buf);
231      siglongjmp(die, TRUE);      siglongjmp(die, TRUE);

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26