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;
106 char *envelopefrom = 0;
116 for (i = 0; i < len; i++)
119 for (i = 0; i < len; i++) {
122 case 'S': clientip =
spfinfo + i + 3;
break;
123 case 'O': envelopefrom =
spfinfo + i + 3;
break;
125 case 'H': helo =
spfinfo + i + 3;
break;
126 case 'T': receiver =
spfinfo + i + 3;
break;
127 case 'P': problem =
spfinfo + i + 3;
break;
129 mechanism =
spfinfo + i + 1;
break;
130 case 'R': result =
spfinfo + i + 3;
break;
136 if (!result || *result == 0) result =
"o";
137 if (!clientip || *clientip == 0) clientip =
remoteip;
138 if (!helo || *helo == 0) helo =
helohost;
139 if (!envelopefrom || *envelopefrom == 0) envelopefrom =
mailfrom;
140 if (!receiver || *receiver == 0) receiver =
local;
141 if (!problem || *problem == 0) problem =
"unknown";
142 if (!mechanism || *mechanism == 0) mechanism =
"unknown";
144 j = str_rchr(envelopefrom,
'@');
145 if (envelopefrom[
j] ==
'@')
identity = envelopefrom +
j + 1;
168 qmail_puts(
qqt,
" not designate permitted sender hosts)\n");
break;
unsigned int date822fmt(char *s, struct datetime *dt)
void datetime_tai(struct datetime *dt, datetime_sec t)
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)