masqmail

annotate admin/config-transition @ 323:29de6a1c4538

Fixed an important bug with folded headers! g_strconcat() returns a *copy* of the string, but hdr->value still pointed to the old header (which probably was a memory leak, too). If the folded part had been quite small it was likely that the new string was at the same position as the old one, thus making everything go well. But if pretty long headers were folded several times it was likely that the new string was allocated somewhere else in memory, thus breaking things. In result mails to lots of recipients (folded header) were frequently only sent to the ones in the first line. Sorry for the inconvenience.
author meillo@marmaro.de
date Fri, 03 Jun 2011 09:47:27 +0200
parents e230bcd0f1c6
children 08932c629849
rev   line source
meillo@219 1 #!/bin/sh
meillo@219 2 #
meillo@219 3 # check masqmail config files for options that are obsolete
meillo@219 4 #
meillo@219 5 # 2010 markus schnalke <meillo@marmaro.de>
meillo@219 6
meillo@219 7 if [ $# -eq 0 ] ; then
meillo@311 8 echo "usage: config-transition CONFIGFILE..." >&2
meillo@219 9 exit 1
meillo@219 10 fi
meillo@219 11
meillo@219 12 awkscript="/tmp/masqmail-config-transition-$$"
meillo@219 13
meillo@219 14 trap 'rm -f "$awkscript"; exit' INT QUIT TERM EXIT
meillo@219 15
meillo@219 16 cat >"$awkscript" <<!
meillo@219 17 # Because of the Here-document, escape (with backslash) these characters:
meillo@219 18 # backslash, dollar, backtick
meillo@219 19 BEGIN {
meillo@219 20
meillo@219 21 ######## START OF CHECKS ########
meillo@219 22
meillo@219 23 # Rules look like this:
meillo@219 24 #
meillo@219 25 # check["regexp"] = "conf-kind" SUBSEP "version-info" SUBSEP "verbose-description"
meillo@219 26 #
meillo@219 27 # Meaning of the strings:
meillo@219 28 # - regexp: is also used as the name in the normal listing
meillo@219 29 # - conf-kind: in which kind of config the option appears (conf, route, get)
meillo@219 30 # - version-info: when it was removed
meillo@219 31 # - verbose-description: how to do it now
meillo@219 32
meillo@219 33
meillo@219 34 # conf file
meillo@219 35
meillo@219 36 check["remote_port"] = "conf" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 37 Use 'mail_host' in the route configuration instead. \
meillo@219 38 "
meillo@219 39
meillo@219 40 check["mbox_default.*maildir"] = "conf" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 41 Native maildir support was removed completely. \
meillo@219 42 Use an MDA, e.g. procmail, to deliver to Maildir mail folder. \
meillo@219 43 "
meillo@219 44
meillo@219 45 check["maildir_users"] = "conf" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 46 Native maildir support was removed completely. \
meillo@219 47 Use an MDA, e.g. procmail, to deliver to Maildir mail folder. \
meillo@219 48 "
meillo@219 49
meillo@219 50 check["mserver_iface"] = "conf" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 51 Native mserver support was removed from masqmail. \
meillo@219 52 Use the mservdetect tool with online_detect=pipe instead. \
meillo@219 53 "
meillo@219 54
meillo@219 55 check["get\\\\."] = "conf" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 56 The POP3 client was removed from masqmail. \
meillo@219 57 Use a dedicated POP3 client, e.g. fetchmail, instead. \
meillo@219 58 "
meillo@219 59
meillo@219 60 check["online_gets\\\\."] = "conf" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 61 The POP3 client was removed from masqmail. \
meillo@219 62 Use a dedicated POP3 client, e.g. fetchmail, instead. \
meillo@219 63 "
meillo@219 64
meillo@243 65 check["alias_local_caseless"] = "conf" SUBSEP "Renamed in 0.3.1" SUBSEP "\
meillo@243 66 It is now called 'caseless_matching' instead. \
meillo@243 67 "
meillo@243 68
meillo@310 69 check["online_detect"] = "conf" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 70 Distilled to online_query. \
meillo@310 71 "
meillo@310 72
meillo@310 73 check["online_file"] = "conf" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@310 74 Use online_query=\"/bin/cat /path/to/file\" instead. \
meillo@310 75 "
meillo@310 76
meillo@310 77 check["online_pipe"] = "conf" SUBSEP "Renamed in 0.3.2" SUBSEP "\
meillo@310 78 Now known as online_query. online_detect=pipe is not needed anymore. \
meillo@310 79 "
meillo@310 80
meillo@219 81 # route files
meillo@219 82
meillo@219 83 check["pop3_login"] = "route" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 84 POP-before-SMTP login function was removed completely. \
meillo@219 85 SMTP AUTH supersedes it today. \
meillo@219 86 If you though rely on it, stay with masqmail-0.2.x or run an arbitrary POP client before. \
meillo@219 87 "
meillo@219 88
meillo@219 89 check["do_ssl"] = "route" SUBSEP "Ignored by masqmail" SUBSEP "\
meillo@219 90 Please report to the mailing list at <masqmail@marmaro.de> that you used this option. \
meillo@219 91 We still don't know the rationale behind this option. \
meillo@219 92 All we have is a comment in the code saying: This option is used by sqilconf. \
meillo@219 93 "
meillo@219 94
meillo@311 95 check["protocol"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@311 96 If pipe is given, pipe will be used, otherwise smtp will be used. \
meillo@311 97 "
meillo@311 98
meillo@317 99 check["(^|[ ])allowed_return_paths"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 100 Replaced by 'allowed_senders'. \
meillo@317 101 "
meillo@317 102
meillo@317 103 check["not_allowed_return_paths"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 104 Replaced by 'denied_senders'. \
meillo@317 105 "
meillo@317 106
meillo@317 107 check["(^|[ ])allowed_mail_locals"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 108 Replaced by 'allowed_senders', if neither wildcards nor '@' is used. \
meillo@317 109 "
meillo@317 110
meillo@317 111 check["not_allowed_mail_locals"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 112 Replaced by 'denied_senders', if neither wildcards nor '@' is used. \
meillo@317 113 "
meillo@317 114
meillo@317 115 check["(^|[ ])allowed_rcpt_domains"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 116 Replaced by 'allowed_recipients', if the values are prepended with \
meillo@317 117 '*@', because 'allowed_recipients' matches complete addresses not just \
meillo@317 118 domains. \
meillo@317 119 "
meillo@317 120
meillo@317 121 check["not_allowed_rcpt_domains"] = "route" SUBSEP "Removed in 0.3.2" SUBSEP "\
meillo@317 122 Replaced by 'denied_recipients', if the values are prepended with \
meillo@317 123 '*@', because 'allowed_recipients' matches complete addresses not just \
meillo@317 124 domains. \
meillo@317 125 "
meillo@317 126
meillo@219 127 # get files
meillo@219 128
meillo@219 129 # already covered by the get.* and online_gets.* options in the conf
meillo@219 130 # file. This check is just to make sure, because one might only check
meillo@219 131 # the get file.
meillo@219 132 # We don't check for the other get file options, which are:
meillo@219 133 # protocol server port wrapper user pass address return_path do_keep
meillo@219 134 # do_uidl do_uidl_dele max_size max_size_delete max_count resolve_list
meillo@219 135
meillo@219 136 check["protocol.*pop"] = "get" SUBSEP "Removed in 0.3.0" SUBSEP "\
meillo@219 137 The POP3 client was removed from masqmail. \
meillo@219 138 Use a dedicated POP3 client, e.g. fetchmail, instead. \
meillo@219 139 "
meillo@219 140
meillo@219 141
meillo@219 142 ######## END OF CHECK DEFINITIONS ########
meillo@219 143 }
meillo@219 144
meillo@219 145 function checkcomment() {
meillo@219 146 if (/^[ \t]*\#/) {
meillo@219 147 return " (in a comment)"
meillo@219 148 }
meillo@219 149 }
meillo@219 150
meillo@219 151 {
meillo@219 152 for (key in check) {
meillo@219 153 if (\$0 !~ key) {
meillo@219 154 continue;
meillo@219 155 }
meillo@219 156 # we have a match
meillo@219 157 split(check[key], a, SUBSEP); # array index starts with 1
meillo@219 158 printf("%s:%d: [%s] %s%s\n", FILENAME, NR, a[1], key, checkcomment());
meillo@219 159 cmd = "fold -sw 70 | sed 's,^,\t,'"
meillo@311 160 print "\t>>>> " \$0 " <<<<"
meillo@311 161 print a[3] | cmd
meillo@311 162 close(cmd)
meillo@311 163 print "\t" a[2]
meillo@311 164 print ""
meillo@219 165 }
meillo@219 166 }
meillo@219 167
meillo@219 168 !
meillo@219 169
meillo@219 170
meillo@219 171 for i do
meillo@311 172 awk -f "$awkscript" "$i"
meillo@219 173 done