| 
    Qsmtp
    0.30dev
    
   | 
 
main functions of Qremote More...
#include <qremote/qremote.h>#include <control.h>#include <fmt.h>#include <ipme.h>#include <log.h>#include <netio.h>#include <qdns.h>#include <qmaildir.h>#include <qremote/client.h>#include <qremote/conn.h>#include <qremote/greeting.h>#include <qremote/qrdata.h>#include <qremote/starttlsr.h>#include <sstring.h>#include <tls.h>#include <errno.h>#include <fcntl.h>#include <netinet/in.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/mman.h>#include <sys/socket.h>#include <sys/stat.h>#include <syslog.h>#include <unistd.h>Functions | |
| void | quitmsg (void) | 
| send QUIT to the remote server and close the connection  More... | |
| void | net_conn_shutdown (const enum conn_shutdown_type sd_type) | 
| shutdown the connection and end the program  More... | |
| void | err_mem (const int doquit) | 
| void | err_conf (const char *errmsg) | 
| void | err_confn (const char **errmsg, void *freebuf) | 
| log a configuration error and exit  More... | |
| static void | setup (void) | 
| int | main (int argc, char *argv[]) | 
Variables | |
| int | socketd = -1 | 
| unsigned int | smtpext | 
| char * | rhost | 
| size_t | rhostlen | 
| char * | partner_fqdn | 
main functions of Qremote
This file contains the main function, the configuration and error handling of Qremote, the drop-in replacement for qmail-remote.
| void err_confn | ( | const char ** | errmsg, | 
| void * | freebuf | ||
| ) | 
log a configuration error and exit
| errmsg | array of strings to combine to the message to log | 
| freebuf | a pointer to a buffer passed to free() after logging | 
Use freebuf if the contents of this buffer need to be part of errmsg. If you do not have anything to free just pass NULL.
| void net_conn_shutdown | ( | const enum conn_shutdown_type | sd_type | ) | 
shutdown the connection and end the program
| sd_type | specifies the way the shutdown should be performed | 
This is a forward declaration only, every program has to implement this function in a way that matches how it works.
A shutdown_clean shutdown is e.g. sending QUIT to the server and waiting for it's reply. A shutdown with shutdown_abort is e.g. hard dropping of the connection if the client sends spam and has a broken SMTP engine that does not react to error codes.
Calling this function even before the connection was established is fine.
| void quitmsg | ( | void | ) | 
send QUIT to the remote server and close the connection
This will properly shut down the connection to the remote server but will not terminate the program.
| char* partner_fqdn | 
the DNS name of the remote server (forward-lookup), or NULL if the connection was done by IP
| char* rhost | 
the DNS name (if present) and IP address of the remote server to be used in log messages
| size_t rhostlen | 
valid length of rhost
| unsigned int smtpext | 
the SMTP extensions supported by the remote server
 1.8.10