GithubHelp home page GithubHelp logo

stevejenkins / postwhite Goto Github PK

View Code? Open in Web Editor NEW
86.0 39.0 26.0 219 KB

Script for generating a whitelist for Postfix's Postscreen based on large senders' SPF records

Home Page: https://www.stevejenkins.com/blog/2015/11/postscreen-whitelisting-smtp-outbound-ip-addresses-large-webmail-providers/

License: MIT License

Shell 100.00%
postfix blacklist spf-tools postscreen-whitelist whitelist postfix-postscreen mailer postscreen

postwhite's Introduction

Codeship Status for stevejenkins/postwhite Issue Count

Postwhite - Automatic Postcreen Whitelist & Blacklist Generator

A script for generating a Postscreen whitelist (and optionally a blacklist) based on large and presumably trustworthy senders' SPF records.

Why Postwhite?

Postwhite uses the published SPF records from domains of known webmailers, social networks, ecommerce providers, and compliant bulk senders to generate a list of outbound mailer IP addresses and CIDR ranges to create a whitelist (and optionally a blacklist) for Postfix's Postscreen.

This allows Postscreen to save time and resources by immediately handing off whitelisted connections from these hosts (which we can somewhat safely presume are properly configured) to Postfix's smtpd process for further action. Blacklisted hosts are rejected before they reach Postfix's smtpd process.

Note this does not whitelist (or blacklist) email messages from any of these hosts. A whitelist for Postscreen (which is merely the first line of Postfix's defense) merely allows listed hosts to connect to Postfix without further tests to prove they are properly configured and/or legitimate senders. A Postscreen blacklist does nothing but reject the connection based on the blacklisted host's IP.

If all of the whitelist mailers are selected when Postwhite runs, the resulting whitelist includes over 500 outbound mail servers, all of which have a very high probability of being properly configured.

Warning about Blacklisting

By default, Postwhite has blacklisting turned off. Most users will not need to ever turn it on, but it's there if you really believe you need it. If you choose to enable it, make sure you understand the implications of blacklisting IP addresses based on their hostnames and associated mailers, and re-run Postwhite often via cron to make sure you're not inadvertently blocking legitimate senders.

Requirements

Postwhite runs as a shell script (/bin/sh) and relies on two scripts from the SPF-Tools project (despf.sh and simplify.sh) to help recursively query SPF records. I recommend cloning or copying the entire SPF-Tools repo to /usr/local/bin/directory on your system, then confirming the spftoolspath value in postwhite.

Please update SPF-Tools whenever you update Postwhite, as both are under continuous development, and sometimes new features of Postwhite depend upon an updated version of SPF-Tools.

Postwhite also assumes that you have Postfix and the appropriate bind-utils package for your Linux distro installed on your system.

Usage

  1. Make sure you have SPF-Tools on your system
  2. Move the postwhite.conf file to your /etc/ directory
  3. Add any custom hosts in postwhite.conf
  4. Run ./postwhite from the command line.

You can optionally provide a configuration file via the command line which will override the default configuration file:

./postwhite /path/to/config-file

I recommend cloning both the SPF-Tools and the Postwhite repos into your /usr/local/bin/ directory. Once you're satisfied with its performance, set a daily cron job to pick up any new hosts in the mailers' SPF records like this:

@daily /usr/local/bin/postwhite/postwhite > /dev/null 2>&1 #Update Postscreen Whitelists

I also recommend updating the list of known Yahoo! IP outbound mailers weekly:

@weekly /usr/local/bin/postwhite/scrape_yahoo > /dev/null 2>&1 #Update Yahoo! IPs for Postscreen Whitelists

(Please read more about Yahoo! hosts below)

When executed, Postwhite will generate a file named postscreen_spf_whitelist.cidr, write it to your Postfix directory, then reload Postfix to pick up any changes.

Add the filename of your whitelist (and optionally your blacklist) to the postscreen_access_list option in your Postfix main.cf file, like this:

postscreen_access_list = permit_mynetworks,
...
        cidr:/etc/postfix/postscreen_spf_whitelist.cidr,
        cidr:/etc/postfix/postscreen_spf_blacklist.cidr,
...

IMPORTANT: If you choose to enable blacklisting, list the blacklist file after the whitelist file in main.cf, as shown above. If you misconfigure Postwhite and an IP address inadvertently finds its way onto both lists, the first entry "wins." Listing the whitelist file first in main.cf will assure that whitelisted hosts aren't blacklisted, even if they appear in the blacklist file.

Then do a manual postfix reload or re-run ./postwhite to build a fresh whitelist and automatically reload Postfix.

Options

Options for Postwhite are located in the postwhite.conf file. This file shoud be moved to your system's /etc/ directory before running Postwhite for the first time.

Custom Hosts

By default, Postwhite includes a number of well-known (and presumably trustworthy) mailers in five categories:

  • Webmailers
  • Ecommerce
  • Social Networks
  • Bulk Senders
  • Miscellaneous

To add your own additional custom hosts, add them to the custom_hosts section of /etc/postwhite.conf separated by a single space:

custom_hosts="aol.com google.com microsoft.com"

Additional trusted mailers are added to the script from time to time, so check back periodically for new versions, or "Watch" this repo to receive update notifications.

Hosts that Don't Publish their Outbound Mailers via SPF Records

Because Postwhite relies on published SPF records to build its whitelist, mailers who refuse to publish outbound mailer IP addresses via SPF are problematic. The largest such host is Yahoo!, which is dealt with separately (see below). For smaller mailhosts without SPF-published mailer lists, the included query_host_ovh file is a working example of a script that queries a range of hostnames for a specific mailer (mail-out.ovh.net in the included example), collects valid IP addresses, and includes them in a custom whitelist. The new custom whitelist may then be included in as an additional entry in your Postfix's postscreen_access_list parameter (see Usage above). An example of the query_host_ovh file's output is included in the /examples/ folder as postscreen_ovh_whitelist.cidr.

To create additional customized query scripts for mailers that don't publish outbound IPs via SPF, copy the example query_host_ovh file to a new unique filename, edit the script's mailhost and numerical range values as required, set a unique output file (/etc/postfix/postscreen_*_whitelist.cidr), include the output file in Postfix's postscreen_access_list parameter, then configure cron to run the new query script periodically.

Depending on the size of the range you wish to query, this script could take a long time to complete. I recommend testing on a small fraction of the mailhost's range before pushing the script to a production environment.

Yahoo! Hosts

As mentioned in the Known Issues, Yahoo!'s SPF record doesn't support queries to expose their netblocks, and therefore a dynamic list of Yahoo mailers can't be built. However, Yahoo! does publish a list of outbound mailer IP addresses at https://help.yahoo.com/kb/SLN23997.html.

A list of Yahoo! outbound IP addresses, based on the linked knowledgebase article and formatted for Postwhite, is included as yahoo_static_hosts.txt. By default, the contents of this file are added to the final whitelist. To disable the Yahoo! IPs from being included in your whitelist, set the include_yahoo configuration option in /etc/postwhite.conf to include_yahoo="no".

The yahoo_static_hosts.txt file can be periodically updated by running the scrape_yahoo script, which requires either Wget or cURL (included on most systems). The scrape_yahoo script reads the Postwhite config file for the location to write the updated list of Yahoo! oubound IP addresses. Run the scrape_yahoo script periodically via cron (I recommend no more than weekly) to automatically update the list of Yahoo! IPs used by Postwhite.

Blacklisting

To enable blacklisting, set enable_blacklist=yes and then list blacklisted hosts in blacklist_hosts. Please refer to the blacklisting warning above. Blacklisting is not the primary purpose of Postwhite, and most users will never need to turn it on.

Simplify

By default, the option to simplify (remove) invididual IP addresses that are already included in CIDR ranges (handled by the SPT-Tools simplify.sh script) is set to no. Turning this feature on when building a whitelist for more than just a few mailers dramatically adds to the processing time required to run Postwhite. Feel free to turn it on to see how it affects the amount of time required to build your whitelist, but if you're whitelisting more than just 3 or 4 mailers, you'll probably want to turn it to "no" again. Having a handful of individual IP addresses in your whitelist that might be redundantly covered by CIDR ranges won't have any appreciable impact on Postscreen's performance.

Invalid hosts

You can also choose how to handle malformed or invalid CIDR ranges that appear in the mailers' SPF records (which happens more often than it should). The options are:

  • remove - the default action, it removes the invalid CIDR range so it doesn't appear in the whitelist.
  • keep - this keeps the invalid CIDR range in the whitelist. Postfix will log a warning about non-null host address bits, suggest the closest valid range with a matching prefix length, and harmlessly ignore the rule. Useful only if you want to see which mailers are less than careful about their SPF records (cough, cough, Microsoft, cough, cough).
  • fix - this option will change the invalid CIDR to the closest valid range (the same one suggested by Postfix, in fact) and include the corrected CIDR range in the whitelist.

Other options in postwhite.conf include changing the filenames for your whitelist & blacklist, Postfix path, SPF-Tools path, and whether or not to automatically reload Postfix after you've generated a new list.

Credits

  • Special thanks to Mike Miller for his 2013 gwhitelist script that initially got me tinkering with SPF-based Postscreen whitelists. The temp file creation and printf statement near the end of the Postwhite script are remnants of his original script.
  • Thanks to Jan Sarenik (author of SPF-Tools).
  • Thanks to Jose Borges Ferreira for patches and contributions to Postwhite, include internal code to validate CIDRs.
  • Thanks to Ricardo Iván Vieitez Parra for contributions to Postwhite, including external config file support, normalization improvements, error handling, and additional modifications that allow Postwhite to run on additional systems.
  • Thanks to partner (business... not life) Steve Cook for helping me cludge through Bash scripting, and for writing the initial version of the scrape_yahoo script.
  • Thanks to all the generous contributors right here on GitHub who have helped move the project along!

More Info

My blog post discussing how Postwhite came to be is here:

http://www.stevejenkins.com/blog/2015/11/postscreen-whitelisting-smtp-outbound-ip-addresses-large-webmail-providers/

Known Issues

  • I'd love to include Yahoo's IPs in the whitelist via the same methods used for all other mails, but their SPF record doesn't support queries to expose their netblocks. The included scrape_yahoo script, which creates a static list of Yahoo! IPs by scraping their web page, is an acceptable work-around, but if you have a suggestion for a more elegant solution, please create an issue and let me know, or create a pull request.

  • I have no way of validating IPv6 CIDRs yet. For now, the script assumes all SPF-published IPv6 CIDRs are valid and includes them in the whitelist.

  • I've improved the sorting by doing the uniq separately, after the sort. sort -u -V is still ideal, but it the -V option doesn't exist on all platforms (OSX doesn't support it, for example). For now, I can live with the two-step sort and uniq, even though the final output splits the IPv6 address into two grips: those that start with letters and numbers (2a00, 2a01, etc.) at the top, and those that start with numbers only (2001, 2004, etc.) at the bottom. All the IPv4 addresses in the middle are sorted properly. See the /testdata/ folder for examples of different sorting attempts or to play around with your own attempts at sorting. If you have any suggestions to improve the sorting without losing any data, I'm all ears!

Suggestions for Additional Mailers

If you're a Postfix admin who sees a good number of PASS OLD entries for Postscreen in your mail logs, and have a suggestion for an additional mail host that might be a good candidate to include in Postwhite, please comment on this issue: #2

Disclaimer

You are totally responsible for anything this script does to your system. Whether it launches a nice game of Tic Tac Toe or global thermonuclear war, you're on your own. :)

postwhite's People

Contributors

corrideat avatar laemmy avatar stevejenkins avatar szepeviktor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

postwhite's Issues

Error Handling with microsoft.com as example

Hi Steve,

i am currently testing your script and having some troubles with email-providers that do not (always) return valid data, as it seems.

For example: Right now, microsoft.com causes the script to stop.
I have no idea, why, and i am sure a few days ago it worked fine, so obviously a postwhite cronjob may stop working over time, even if left untouched.

I suggest an option to skip invalid responses without stopping the whole script.
And in either case it would be great to output the domain-name that caused the script to skip/stop.

Thanks for your work on this otherwise very helpfull project!

Kind regards,
Tobias

facebook spf hosts not added to whitelist

facebook spf hosts are not in the generated whitelist.

This is the record is see on the mxtoolbox checker for _spf.faceboook.com

v=spf1 ip4:69.63.179.25 ip4:69.63.178.128/25 ip4:69.63.184.0/25 ip4:66.220.144.128/25 ip4:66.220.155.0/24 ip4:69.171.232.0/24 ip4:66.220.157.0/25 ip4:69.171.244.0/24 mx -all

but those hosts are not appearing in the whitelist

Manually allowing some IPs

I have some questions on the whitelist generation because my understanding of it is limited.

How do I set up a list of IPs that I'm sure are OK for my server?

I'm using my email server to receive emails from some local and global shops, and while there's a topic for addresses with valid SPF records, it rarely is the case with random online shops. I've also had issues with my friend sending me mail from https://tutanota.com/.

I saw the permit_mynetworks part, but where do I set those up so that I can actually permit networks I want to send me mail?

I've tried writing a configuration part like this in /etc/postwhite.conf:

custom_hosts="out32-77.sg.b.dm.aliyun.com out32-78.sg.b.dm.aliyun.com out32-85.sg.b.dm.aliyun.com"

I've run /usr/local/bin/postwhite/postwhite, and it didn't add the addresses. It may be because of an invalid SPF record or something like that, but the problem here is that I can't ask AliExpress and other large companies to fix it.
Instead, I need a way to add such lines manually; please correct me if my approach is wrong.

Moreover, how do I make the whole process effective?

Currently, my workflow is:

  • to cause an email to be sent from some site
  • to check tail -f /var/log/mail.log
  • to update /etc/postfix/postscreen_spf_whitelist.cidr manually and try to add a host in /etc/postwhite.conf in hopes it works
  • to cause another email to be sent
  • to check my mail and the log if I don't see the mail

remove and simplify equally time consuming

# Do this to invalid IPv4 addresses and CIDRs (remove / fix / keep)
invalidip4=remove

# Simplify (remove) IP addresses from the whitelist that are already covered by CIDRs
# WARNING: Enabling this option can dramatically increase the time Postwhite takes to
# run if you have many mailers selected. Try it once, then come back and turn it off. :)
simplify=no

This is taken directly from 1.17, and so far it's been removing invalid IPv4 CIDRs for about 20 minutes so far with no end in sight ...

So it would be well to add the same WARNING to the "invalidPv4" section as applies to 'simplify' - given the time and processing it takes.

Move configuration options and custom hosts to external configuration file.

Suggested by @dajones70:

Please consider allowing custom/local lists be put in a local conf file for options like simplify= and the *_hosts= to allow for easy updating of the main postwhite script. I have added to the *_hosts= lists so updates are difficult. Something like a postwhite.conf file would be very helpful so I could keep my local *_hosts= lists that would be appended to the default lists.

Better bash scripting

Your script has code like this:

aol=yes
google=yes
...

if [ "$aol" == "yes" ]; then
    host=aol.com
    $(query_host "$host");
fi

if [ "$google" == "yes" ]; then
    host=google.com
    $(query_host "$host");
fi

Maybe it's better to code this way:

hosts="aol.com google.com ..."

for h in ${hosts}; do
    $(query_host ${h})
done

It's shorter, cleaner.

With abc=yes, you don't know what the real domain name is, is it 'abc.com', or 'abc.net'? why not specify it explicitly?

Not creating /etc/postfix/postscreen_spf_whitelist.cidr automatically

After running /usr/local/bin/postwhite/postwhite a file like this postwhite.VHxoN1 is created in the /tmp directory with all the contents, but this file does not get written to the /etc/postfix directory. This is on Debian 8 and /etc/postwhite.conf exists.

I also guess it is not reloading postfix after too.

Am I doing something wrong?

/32 are removed as invalid

Using the most recent postwhite, all addresses listed as /32 get removed in the "invalid" cleanup, but specifying a /32 cidr is perfectly valid:

root@mail:/etc/postfix# cat /etc/postfix/test.cidr 
1.1.1.1 OK
2.2.2.2/32 OK
root@mail:/etc/postfix# postmap -q 1.1.1.1 cidr:/etc/postfix/test.cidr 
OK
root@mail:/etc/postfix# postmap -q 1.1.1.1/32 cidr:/etc/postfix/test.cidr 
root@mail:/etc/postfix# postmap -q 2.2.2.2 cidr:/etc/postfix/test.cidr 
OK
root@mail:/etc/postfix# postmap -q 2.2.2.2/32 cidr:/etc/postfix/test.cidr 
root@mail:/etc/postfix# 

Note that /32 syntax is not valid for a query argument, but it certainly is valid in the cidr table itself. (The workaround for now is to set invalid_ip4=fix or invalid_ip4=keep.)

Suggested Additions to Whitelist

If you know of a high-volume mailer with a valid SPF record that deserves to be included in Postwhite's whitelist, please comment on this issue. Thanks!

spf with more then 256 ips

is true madness to not trust, make a whitelist from it is only makes things even worse

admins that have so many mail server ips have no need of help from spf

i just like to get a 2020 yaer test to why and where its still usefull ?

ovh.net

http://multirbl.valli.org/lookup/1.mo1.mail-out.ovh.net.html

could this be used ?, see repution and spfbl.net

maybe just find asn number, and use as number to accept or deny, i see many incorrect mta setups from ovh that use custommer only ports in hope thay are open to abuse :/

no real mta do this, i have solved most on blocking ips that are not known to have custommers here from, eg not blacklist random, but whitelist known, the blacklist is for my part bigger then use the whitelist alternative

Need IPv6 CIDR validation

Postwhite checks (and optionally removes or fixes) IPv4 CIDRs to make sure they're valid, but IPv6 validation is still missing. So far, the only IPv6 CIDR that reports as invalid is LinkedIn (2620:109:c006:104::215/32), but as IPv6 popularity increases, I'm sure this will grow.

/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Not found..

Get this output when i run the script.
Dit it run corectly ?
Line 27 on the despf.sh

type $cmd >/dev/null

Script error in the spf tools ?

my output:
Starting Postwhite v3.1 (30 April 2017)

Reading options from /etc/postwhite.conf...

Creating temporary files...

Recursively querying SPF records of selected whitelist mailers...

Querying webmail hosts...
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.

Querying social network hosts...
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.

Querying ecommerce hosts...
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.

Querying bulk mail hosts...
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.

Querying miscellaneous hosts...
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.
/usr/local/bin/spf-tools/despf.sh: Zeile 27: type: host: Nicht gefunden.

Querying custom hosts...

Including scraped Yahoo! outbound hosts...

Removing invalid IPv4 CIDRs from whitelist.......................................

Sorting whitelist rules...

Writing 629 whitelist rules to /etc/postfix/postscreen_spf_whitelist.cidr...

Reloading Postfix configuration to refresh rules...
postfix/postfix-script: refreshing the Postfix mail system

Done!

Impossible to clear list sparkpostmail

The sparkpostmail.com SPF record is:

"v=spf1 exists:%{i}._spf.sparkpostmail.com ~all"

Which makes it impossible to iterate over all the possible IP addresses it could use. I'm not sure if other major hosts use the "exists" prefix.

Is there any work around to this problem?

dash doesn't like the yahoo page

When using scrape_yahoo on debian with sh linked to dash 0.5.7, the output file is empty most of the time.

Testing
sh -c 'echo "$(wget https://help.yahoo.com/kb/SLN23997.html -q -O -)"'
mostly gives an incomplete page (output stops somewhere in the css styles). Without the echo and $() there is nothing missing.

I assume this is due to some Unicode characters or null bytes that dash doesn't like, changing shebang to bash solves the problem for me. Using a pipe directly between wget to grep seems to work too, but maybe there is a cleaner solution.

Sorting isn't perfect

Currently doing the final sort with simply sort -u "${tmp3}" > "${tmp4}"

sort -V works better on Linux systems, but the -V isn't available on OSX (and possibly other systems).

Using any -n options I've tried results in valid data being removed. See https://github.com/stevejenkins/postwhite/tree/master/testdata for examples and further discussion.

For now, I'm choosing a more complete whitelist over a prettier sort. But any suggestions for better sorting without losing data is appreciated.

Non-null host-address bits

Hey,

recently I started to get these errors:

Sep 25 18:51:04 ksol postfix/postscreen[83636]: warning: cidr map /usr/local/etc/postfix/postscreen_spf_whitelist.cidr,
 line 5: non-null host address bits in "2a01:111:f400:7c00::/48", perhaps you should use "2a01:111:f400::/48" instead:
skipping this rule

I have no idea as to what this could be, I run the list generation normally each day.

Postwhite silently crashes on some custom hosts

When I add these specific custom hosts, Postwhite silently fails after querying the last host. Without this, it works fine.

custom_hosts="sparkpost.com sparkpostmail.com"

Not sure if this matters since after attempting to add them I noticed you had already added Sparkpost, but I thought the behavior was strange. This was on a fresh and unmodified Postwhite install.

Add Wildcard subdomain to custom_hosts field

Hello, Providers like OVH are not in the list. After contacting them, they said that adding *.mail-out.ovh.net was the best approach since they might change IP from time to times, but they always keep this subdomain.

So after adding this to custom_hosts field, It is still not working and ovh mails are still getting blocked. Any new idea? Thank you

Weird IP addresses in yahoo_static_hosts.txt

Hey,

after scraping the latest yahoo hosts, I found IPv6 addresses that aren't really valid in the final file:

ipv6:::
ipv6:::
ipv6:::
ipv6:::
ipv6:5e6::af
ipv6:5e6::bef
ipv6:5e6::af
ipv6:5e6::bef
ipv6:5e6::af
ipv6:5e6::bef
ipv6:5e6::af

Can you please look into this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.