From: mmj Date: Tue, 8 Feb 2005 18:13:14 +0000 (+1100) Subject: Tunable port to connect to X-Git-Tag: RELEASE_1_2_12_RC1~121 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15d355c34659f9eaafcf34de409cbbfec6a6fa9d;p=thirdparty%2Fmlmmj.git Tunable port to connect to --- diff --git a/TUNABLES b/TUNABLES index 10868951..ab9a4c6f 100644 --- a/TUNABLES +++ b/TUNABLES @@ -132,3 +132,8 @@ to specify several entries (one pr. line), it's marked "list". being denied due to the listaddress not being in To: or Cc: (see 'tocc'), when it was rejected due to an access rule (see 'access') or whether it's a subscribers only posting list (see 'subonlypost'). + + ยท smtpport (normal) + + In this file a port other than port 25 for connecting to the relayhost + can be specified. diff --git a/include/init_sockfd.h b/include/init_sockfd.h index 0487a333..607e4b9d 100644 --- a/include/init_sockfd.h +++ b/include/init_sockfd.h @@ -24,6 +24,6 @@ #ifndef INIT_SOCKFD_H #define INIT_SOCKFD_H -void init_sockfd(int *sockfd, const char *relayhost); +void init_sockfd(int *sockfd, const char *relayhost, unsigned short port); #endif /* INIT_SOCKFD_H */ diff --git a/include/mlmmj-send.h b/include/mlmmj-send.h index 06d53188..ad0e219b 100644 --- a/include/mlmmj-send.h +++ b/include/mlmmj-send.h @@ -45,7 +45,7 @@ int send_mail_verp(int sockfd, struct strlist *addrs, char *mailmap, size_t mailsize, const char *from, const char *listdir, const char *hdrs, size_t hdrslen, const char *body, size_t bodylen, const char *extra); -int initsmtp(int *sockfd, const char *relayhost); +int initsmtp(int *sockfd, const char *relayhost, unsigned short port); int endsmtp(int *sockfd); #endif /* MMJML_SEND_H */ diff --git a/src/init_sockfd.c b/src/init_sockfd.c index fe85ae7d..df123aec 100644 --- a/src/init_sockfd.c +++ b/src/init_sockfd.c @@ -32,11 +32,10 @@ #include "init_sockfd.h" #include "log_error.h" -void init_sockfd(int *sockfd, const char *relayhost) +void init_sockfd(int *sockfd, const char *relayhost, unsigned short port) { int len; struct sockaddr_in addr; - u_short port = 25; if (getenv("MLMMJ_TESTING")) { relayhost = "127.0.0.1"; diff --git a/src/mlmmj-send.c b/src/mlmmj-send.c index 51461bc6..9a6f8645 100644 --- a/src/mlmmj-send.c +++ b/src/mlmmj-send.c @@ -290,13 +290,13 @@ int send_mail(int sockfd, const char *from, const char *to, return 0; } -int initsmtp(int *sockfd, const char *relayhost) +int initsmtp(int *sockfd, const char *relayhost, unsigned short port) { int retval = 0; char *reply = NULL; char *myhostname = hostnamestr(); - init_sockfd(sockfd, relayhost); + init_sockfd(sockfd, relayhost, port); if((reply = checkwait_smtpreply(*sockfd, MLMMJ_CONNECT)) != NULL) { log_error(LOG_ARGS, "No proper greeting to our connect" @@ -600,7 +600,7 @@ int main(int argc, char **argv) char *mlmmjbounce = NULL, *bindir, *mailmap, *probefile, *a; char *body = NULL, *hdrs = NULL, *memmailsizestr = NULL, *verp = NULL; char relay[16], *listname, *listfqdn, *verpfrom, *maxverprecipsstr; - char strindex[32], *reply; + char strindex[32], *reply, *strport; ssize_t memmailsize = 0; DIR *subddir; struct dirent *dp; @@ -608,6 +608,7 @@ int main(int argc, char **argv) struct hostent *relayent; uid_t uid; struct strlist stl; + unsigned short smtpport = 25; CHECKFULLPATH(argv[0]); @@ -863,11 +864,14 @@ int main(int argc, char **argv) strncpy(relay, RELAYHOST, sizeof(relay)); } } + strport = ctrlvalue(listdir, "smtpport"); + if(strport) + smtpport = (unsigned short)atol(strport); switch(listctrl[0]) { case '1': /* A single mail is to be sent */ case '6': - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); sendres = send_mail(sockfd, bounceaddr, to_addr, replyto, mailmap, st.st_size, listdir, NULL, hdrs, hdrslen, body, bodylen); @@ -910,7 +914,7 @@ int main(int argc, char **argv) } break; case '2': /* Moderators */ - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); if(send_mail_many_fd(sockfd, bounceaddr, NULL, mailmap, st.st_size, subfd, NULL, NULL, listdir, NULL, hdrs, hdrslen, body, bodylen)) @@ -919,7 +923,7 @@ int main(int argc, char **argv) endsmtp(&sockfd); break; case '3': /* resending earlier failed mails */ - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); if(send_mail_many_fd(sockfd, NULL, NULL, mailmap, st.st_size, subfd, listaddr, mailfilename, listdir, mlmmjbounce, hdrs, hdrslen, body, bodylen)) @@ -929,7 +933,7 @@ int main(int argc, char **argv) unlink(subfilename); break; case '4': /* send mails to owner */ - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); if(send_mail_many_fd(sockfd, bounceaddr, NULL, mailmap, st.st_size, subfd, listaddr, mailfilename, listdir, mlmmjbounce, hdrs, hdrslen, body, @@ -939,7 +943,7 @@ int main(int argc, char **argv) endsmtp(&sockfd); break; case '5': /* bounceprobe - handle relayhost local users bouncing*/ - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); sendres = send_mail(sockfd, bounceaddr, to_addr, replyto, mailmap, st.st_size, listdir, NULL, hdrs, hdrslen, body, bodylen); @@ -999,7 +1003,7 @@ int main(int argc, char **argv) } if(verp) { - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); if(write_mail_from(sockfd, verpfrom, verp)) { log_error(LOG_ARGS, "Could not write MAIL FROM\n"); @@ -1034,7 +1038,7 @@ int main(int argc, char **argv) res = getaddrsfromfd(&stl, subfd, maxverprecips); if(stl.count == maxverprecips) { - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); if(verp) { sendres = send_mail_verp( sockfd, &stl, @@ -1072,7 +1076,7 @@ int main(int argc, char **argv) } if(stl.count) { - initsmtp(&sockfd, relay); + initsmtp(&sockfd, relay, smtpport); if(verp) { sendres = send_mail_verp(sockfd, &stl, mailmap, st.st_size, verpfrom, listdir,