&ui_textarea("spfip4s", join("\n", @{$spf->{'ip4:'}}),
3, 40), 3);
+ if (&supports_ipv6()) {
+ print &ui_table_row($text{'value_spfip6s'},
+ &ui_textarea("spfip6s", join("\n", @{$spf->{'ip6:'}}),
+ 3, 40), 3);
+ }
+
print &ui_table_row($text{'value_spfincludes'},
&ui_textarea("spfincludes", join("\n", @{$spf->{'include:'}}),
3, 40), 3);
edit_espfa='$1' is not a valid host to allow sending from
edit_espfmx='$1' is not a valid domain name to allow MX sending from
edit_espfip='$1' is not a valid IP address or IP/prefix to allow sending from
+edit_espfip6='$1' is not a valid IPv6 address or IPv6/prefix to allow sending from
edit_espfinclude='$1' is not a valid additional domain from which mail is sent
edit_espfredirect='$1' is not a valid alternate domain name
edit_espfexp='$1' is a valid record name for a rejection message
value_spfas=Additional allowed sender hosts
value_spfmxs=Additional allowed sender MX domains
value_spfip4s=Additional allowed sender IP addresses/networks
+value_spfip6s=Additional allowed sender IPv6 addresses/networks
value_spfincludes=Other domains from which mail is sent
value_spfall=Action for other senders
value_spfall3=Disallow (-all)
if ($w eq "a" || $w eq "mx" || $w eq "ptr") {
$spf->{$w} = 1;
}
- elsif ($w =~ /^(a|mx|ip4|ptr|include):(\S+)$/) {
+ elsif ($w =~ /^(a|mx|ip4|ip6|ptr|include):(\S+)$/) {
push(@{$spf->{"$1:"}}, $2);
}
elsif ($w eq "-all") {
foreach my $s ("a", "mx", "ptr") {
push(@rv, $s) if ($spf->{$s});
}
-foreach my $s ("a", "mx", "ip4", "ptr", "include") {
+foreach my $s ("a", "mx", "ip4", "ip6", "ptr", "include") {
foreach my $v (@{$spf->{"$s:"}}) {
push(@rv, "$s:$v");
}
$spf->{'ptr'} = $in{'spfptr'};
$spf->{'a:'} = [ split(/\s+/, $in{'spfas'}) ];
foreach my $a (@{$spf->{'a:'}}) {
- gethostbyname($a) || &error(&text('edit_espfa', $a));
+ &to_ipaddress($a) || &error(&text('edit_espfa', $a));
}
$spf->{'mx:'} = [ split(/\s+/, $in{'spfmxs'}) ];
foreach my $mx (@{$spf->{'mx:'}}) {
($ip =~ /^(\S+)\/\d+$/ && &check_ipaddress($1)) ||
&error(&text('edit_espfip', $ip));
}
+ if (&supports_ipv6()) {
+ $spf->{'ip6:'} = [ split(/\s+/, $in{'spfip6s'}) ];
+ foreach my $ip (@{$spf->{'ip6:'}}) {
+ &check_ip6address($ip) ||
+ ($ip =~ /^(\S+)\/\d+$/ &&
+ &check_ip6address($1)) ||
+ &error(&text('edit_espfip6', $ip));
+ }
+ }
$spf->{'include:'} = [ split(/\s+/, $in{'spfincludes'}) ];
foreach my $i (@{$spf->{'include:'}}) {
&valname($i) || &error(&text('edit_espfinclude', $i));