14 if (ch ==
' ')
return 1;
15 if (ch ==
'.')
return 1;
16 if (ch ==
'@')
return 1;
17 if (ch ==
'%')
return 1;
18 if (ch ==
'+')
return 1;
19 if (ch ==
'/')
return 1;
20 if (ch ==
'=')
return 1;
21 if (ch ==
':')
return 1;
22 if (ch ==
'-')
return 1;
23 if ((ch >=
'a') && (ch <=
'z'))
return 1;
24 if ((ch >=
'A') && (ch <=
'Z'))
return 1;
25 if ((ch >=
'0') && (ch <=
'9'))
return 1;
97 char *envelopefrom = 0;
107 for (i = 0; i < len; i++)
110 for (i = 0; i < len; i++) {
113 case 'S': clientip =
spfinfo + i + 3;
break;
114 case 'O': envelopefrom =
spfinfo + i + 3;
break;
116 case 'H': helo =
spfinfo + i + 3;
break;
117 case 'T': receiver =
spfinfo + i + 3;
break;
118 case 'P': problem =
spfinfo + i + 3;
break;
120 mechanism =
spfinfo + i + 1;
break;
121 case 'R': result =
spfinfo + i + 3;
break;
127 if (!result || *result == 0) result =
"o";
128 if (!clientip || *clientip == 0) clientip =
remoteip;
129 if (!helo || *helo == 0) helo =
helohost;
130 if (!envelopefrom || *envelopefrom == 0) envelopefrom =
mailfrom;
131 if (!receiver || *receiver == 0) receiver =
local;
132 if (!problem || *problem == 0) problem =
"unknown";
133 if (!mechanism || *mechanism == 0) mechanism =
"unknown";
135 j = str_rchr(envelopefrom,
'@');
136 if (envelopefrom[
j] ==
'@')
identity = envelopefrom +
j + 1;
159 qmail_puts(
qqt,
" not designate permitted sender hosts)\n");
break;
unsigned int date822fmt(char *s, struct datetime *dt)
void qmail_put(struct qmail *, char *, int)
void qmail_puts(struct qmail *, char *)
void safeput(struct qmail *qqt, char *s)
void spfheader(struct qmail *qqt, char *spfinfo, char *local, char *remoteip, char *helohost, char *mailfrom)