init
This commit is contained in:
commit
500021adcf
1
DEBIAN/conffiles
Normal file
1
DEBIAN/conffiles
Normal file
|
@ -0,0 +1 @@
|
|||
|
7
DEBIAN/control
Normal file
7
DEBIAN/control
Normal file
|
@ -0,0 +1,7 @@
|
|||
Package: spfgenerator
|
||||
Version: 1.1.1
|
||||
Section: base
|
||||
Priority: optional
|
||||
Architecture: all
|
||||
Maintainer: Simon Vieille <simon+spfgenerator@deblan.fr>
|
||||
Description: SPF Generator
|
2
DEBIAN/postins
Executable file
2
DEBIAN/postins
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
|
1
DEBIAN/postrm
Executable file
1
DEBIAN/postrm
Executable file
|
@ -0,0 +1 @@
|
|||
#!/bin/sh
|
156
usr/bin/spfgenerator
Executable file
156
usr/bin/spfgenerator
Executable file
|
@ -0,0 +1,156 @@
|
|||
#!/bin/sh
|
||||
|
||||
showHelp() {
|
||||
cat <<EOF
|
||||
NAME
|
||||
spfgenerator generate SPF DNS entry
|
||||
|
||||
SYNOPSIS
|
||||
spfgenerator [-h] [-s] [-mx] [-a [domain]] [-i domain] [-p fail|soft|neutral] [-d domain]
|
||||
|
||||
DESCRIPTION
|
||||
spfgenerator generates SPF DNS entry
|
||||
|
||||
-h, --help
|
||||
show this help.
|
||||
|
||||
-mx
|
||||
Allow servers listed as MX to send email for the domain.
|
||||
|
||||
-ip <ip>
|
||||
Allow IP to send email for the domain.
|
||||
Can be used several times.
|
||||
|
||||
-i, --include <domain>
|
||||
Any domains that may deliver or relay mail for the domain.
|
||||
Can be used several times.
|
||||
|
||||
-a <domain>
|
||||
Add any other server hostname that may deliver or relay mail for the domain.
|
||||
If domain is empty, it allow current IP address of the domain to send email for the domain.
|
||||
Can be used several times.
|
||||
|
||||
-p, --policy <fail|soft|neutral
|
||||
How strict should be the servers treating the emails
|
||||
|
||||
neutral:
|
||||
Mails will be probably accepted
|
||||
Default value.
|
||||
|
||||
fail:
|
||||
Not compliant will be rejected
|
||||
|
||||
soft:
|
||||
Not compliant will be accepted but marked
|
||||
|
||||
-d, --domain <domain>
|
||||
Default value: @
|
||||
|
||||
-s, --short
|
||||
Only show the value
|
||||
EOF
|
||||
}
|
||||
|
||||
MX=0
|
||||
IPv4s=
|
||||
IPv6s=
|
||||
INCLUDEs=
|
||||
POLICY='?all'
|
||||
DOMAIN=@
|
||||
SHORT=0
|
||||
As=
|
||||
|
||||
testData() {
|
||||
if [ -z "$1" ]; then
|
||||
(
|
||||
echo "Invalid parameter ($2)\n"
|
||||
showHelp
|
||||
) >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
addIp() {
|
||||
if [ -n "$1" ]; then
|
||||
if [ $(echo "$1" | egrep "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") ]; then
|
||||
IPv4s="$IPv4s ip4:$1"
|
||||
else
|
||||
IPv6s="$IPv6s ip6:$1"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
addA() {
|
||||
if [ -z "$1" ]; then
|
||||
As="$As a"
|
||||
else
|
||||
As="$As a:$1"
|
||||
fi
|
||||
}
|
||||
|
||||
addInclude() {
|
||||
if [ -n "$1" ]; then
|
||||
INCLUDEs="$INCLUDEs include:$1"
|
||||
fi
|
||||
}
|
||||
|
||||
for i in $@; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
showHelp
|
||||
exit 0
|
||||
;;
|
||||
-mx)
|
||||
MX=1
|
||||
shift
|
||||
;;
|
||||
-s|--short)
|
||||
SHORT=1
|
||||
shift
|
||||
;;
|
||||
-a)
|
||||
shift
|
||||
addA $1
|
||||
shift
|
||||
;;
|
||||
-ip)
|
||||
shift
|
||||
addIp $1
|
||||
shift
|
||||
;;
|
||||
-i|--include)
|
||||
shift
|
||||
addInclude $1
|
||||
shift
|
||||
;;
|
||||
-p|--policy)
|
||||
shift
|
||||
case $1 in
|
||||
neutral) POLICY='?all';;
|
||||
soft) POLICY='~all';;
|
||||
fail) POLICY='-all';;
|
||||
esac
|
||||
shift
|
||||
;;
|
||||
-d|--domain)
|
||||
shift
|
||||
DOMAIN=$1
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
testData "$DOMAIN" domain
|
||||
testData "$IPv4s$IPv6s" ip
|
||||
|
||||
(
|
||||
if [ $MX -eq 1 ]; then
|
||||
MX=mx
|
||||
fi
|
||||
|
||||
if [ $SHORT -eq 0 ]; then
|
||||
echo "$DOMAIN IN TXT \"v=spf1 $MX $As $IPv4s $IPv6s $INCLUDEs $POLICY\""
|
||||
else
|
||||
echo "v=spf1 $MX $As $IPv4s $IPv6s $INCLUDEs $POLICY"
|
||||
fi
|
||||
) | sed 's/ */ /g'
|
Loading…
Reference in a new issue