summaryrefslogtreecommitdiffstats
path: root/qmail-remote.c
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2014-02-18 13:14:03 +0100
committermanuel <manuel@mausz.at>2014-02-18 13:14:03 +0100
commitc67d7d47af6838d0df89fa5072d6c1248eadf29d (patch)
treea1204ba8ac8545d0c6cb0c46947d5d3015e96e30 /qmail-remote.c
parent27c3fccb483011713613758ef50d55eefe179e93 (diff)
downloadqmail-c67d7d47af6838d0df89fa5072d6c1248eadf29d.tar.gz
qmail-c67d7d47af6838d0df89fa5072d6c1248eadf29d.tar.bz2
qmail-c67d7d47af6838d0df89fa5072d6c1248eadf29d.zip
get rid of DNS ANY query
UltraDNS started blocking UDP-ANY queries so this is a problem. This will disable domain canonicalization of the envelope address of outgoing messages. This is as specified by RFC 1123 section 5.2.2. However this requirement is obsolete and modern MTAs have disabled it too.
Diffstat (limited to 'qmail-remote.c')
-rw-r--r--qmail-remote.c28
1 files changed, 4 insertions, 24 deletions
diff --git a/qmail-remote.c b/qmail-remote.c
index 49bd5c4..be997f0 100644
--- a/qmail-remote.c
+++ b/qmail-remote.c
@@ -798,19 +798,14 @@ void qmtp()
798 zerodie(); 798 zerodie();
799} 799}
800 800
801stralloc canonhost = {0};
802stralloc canonbox = {0}; 801stralloc canonbox = {0};
803 802
804void addrmangle(saout,s,flagalias,flagcname) 803void addrmangle(saout,s)
805stralloc *saout; /* host has to be canonical, box has to be quoted */ 804stralloc *saout; /* host has to be canonical, box has to be quoted */
806char *s; 805char *s;
807int *flagalias;
808int flagcname;
809{ 806{
810 int j; 807 int j;
811 808
812 *flagalias = flagcname;
813
814 j = str_rchr(s,'@'); 809 j = str_rchr(s,'@');
815 if (!s[j]) { 810 if (!s[j]) {
816 if (!stralloc_copys(saout,s)) temp_nomem(); 811 if (!stralloc_copys(saout,s)) temp_nomem();
@@ -820,17 +815,7 @@ int flagcname;
820 canonbox.len = j; 815 canonbox.len = j;
821 if (!quote(saout,&canonbox)) temp_nomem(); 816 if (!quote(saout,&canonbox)) temp_nomem();
822 if (!stralloc_cats(saout,"@")) temp_nomem(); 817 if (!stralloc_cats(saout,"@")) temp_nomem();
823 818 if (!stralloc_cats(saout,s + j + 1)) temp_nomem();
824 if (!stralloc_copys(&canonhost,s + j + 1)) temp_nomem();
825 if (flagcname)
826 switch(dns_cname(&canonhost)) {
827 case 0: *flagalias = 0; break;
828 case DNS_MEM: temp_nomem();
829 case DNS_SOFT: temp_dnscanon();
830 case DNS_HARD: ; /* alias loop, not our problem */
831 }
832
833 if (!stralloc_cat(saout,&canonhost)) temp_nomem();
834} 819}
835 820
836void getcontrols() 821void getcontrols()
@@ -860,8 +845,6 @@ char **argv;
860 unsigned long random; 845 unsigned long random;
861 char **recips; 846 char **recips;
862 unsigned long prefme; 847 unsigned long prefme;
863 int flagallaliases;
864 int flagalias;
865 char *relayhost; 848 char *relayhost;
866 849
867 sig_pipeignore(); 850 sig_pipeignore();
@@ -902,18 +885,16 @@ char **argv;
902 } 885 }
903 886
904 887
905 addrmangle(&sender,argv[2],&flagalias,0); 888 addrmangle(&sender,argv[2]);
906 889
907 if (!saa_readyplus(&reciplist,0)) temp_nomem(); 890 if (!saa_readyplus(&reciplist,0)) temp_nomem();
908 if (ipme_init() != 1) temp_oserr(); 891 if (ipme_init() != 1) temp_oserr();
909 892
910 flagallaliases = 1;
911 recips = argv + 3; 893 recips = argv + 3;
912 while (*recips) { 894 while (*recips) {
913 if (!saa_readyplus(&reciplist,1)) temp_nomem(); 895 if (!saa_readyplus(&reciplist,1)) temp_nomem();
914 reciplist.sa[reciplist.len] = sauninit; 896 reciplist.sa[reciplist.len] = sauninit;
915 addrmangle(reciplist.sa + reciplist.len,*recips,&flagalias,!relayhost); 897 addrmangle(reciplist.sa + reciplist.len,*recips);
916 if (!flagalias) flagallaliases = 0;
917 ++reciplist.len; 898 ++reciplist.len;
918 ++recips; 899 ++recips;
919 } 900 }
@@ -937,7 +918,6 @@ char **argv;
937 prefme = ip.ix[i].pref; 918 prefme = ip.ix[i].pref;
938 919
939 if (relayhost) prefme = 300000; 920 if (relayhost) prefme = 300000;
940 if (flagallaliases) prefme = 500000;
941 921
942 for (i = 0;i < ip.len;++i) 922 for (i = 0;i < ip.len;++i)
943 if (ip.ix[i].pref < prefme) 923 if (ip.ix[i].pref < prefme)