Hallo Allerseits,
als logische Erweiterung der Spambekämpfung überprüfe ich hin und wieder die Einträge verschiedener DNS Blacklisten.
Es gibt bereits Seiten die diesen Service anbieten. Die meisten sind allerdings nicht vollständig oder total überladen und voll mit Werbung.
Ich habe diesen Service mit 57 Listen (!) nun so bereitgestellt, dass ihr per IFRAME das ganze auf eurer eigenen Webseite anbieten könnt. Das Skript erreicht ihr unter:
So direkt sieht es natürlich etwas langweilig aus. Bitte die entsprechenden Anpassungen per CSS vornehmen.
Hier mein Ergebnis: msp-it - DNSBL Test
Hier das Skript selbst:
Über konstruktive Kritik freut sich,
Ulrich
PS
Ich habe es hier unter Plesk gepostet, weil ich es als Erweiterung im weiteren Sinne verstehe. Oder gibt es einen besseren Platz, an dem es auch genügend Aufmerksamkeit bekommt?
als logische Erweiterung der Spambekämpfung überprüfe ich hin und wieder die Einträge verschiedener DNS Blacklisten.
Es gibt bereits Seiten die diesen Service anbieten. Die meisten sind allerdings nicht vollständig oder total überladen und voll mit Werbung.
Ich habe diesen Service mit 57 Listen (!) nun so bereitgestellt, dass ihr per IFRAME das ganze auf eurer eigenen Webseite anbieten könnt. Das Skript erreicht ihr unter:
Code:
http://www.dnsbl-test.de/dnsbl-test.php
Hier mein Ergebnis: msp-it - DNSBL Test
Hier das Skript selbst:
Code:
<?php
# (C) Ulrich C. Manns, msp informations technologie, 2009
# E-Mail: [email protected]
# Internet: http://www.msp-it.de/
# Direkter Aufruf per IFRAME: http://www.dnsbl-test.de/dnsbl-test.php
#
# History: (wird nach unten fortgeschrieben) (+ Hinzugefügt, - Entfernt, ! Geändert)
#
# + Listen als Link nutzbar, dabei wird aus dem Listennamen die DOMAIN.TLD genutzt.
# + Links öffnen externe Seite
# 15.06.2009 ! Falsche Meldungstexte bei fehlender IP-Adresse (HOSTNAMEFAIL mit IPFAIL vertauscht)
# ! Überprüfung nun auch möglich, wenn kein Hostnamen aufgelöst wird (Achtung! Das ist schon ein Grund, als Spammer erkannt zu werden.)
# Konstanten
# LANG zur Auswahl der Sprachdatei
define( "LANG", substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ) );
# weitere Konstanten ... gehören dann in ein Languagefile
define( "BACK", "Zurück" );
define( "DNSBLTEST", "DNS Blacklist Test" );
define( "DNSBLTEST1", "Bitte wenden Sie sich an den Anbieter der Liste, um ggfls. eine IP-Adresse entfernen zu lassen." );
define( "DNSBLTEST2", "Fehlt eine DNS Blacklist? Dann senden Sie uns bitte eine E-Mail oder nutzen Sie unser Kontaktformular!" );
define( "HOST", "DNS Blacklist Test" );
define( "HOST1", "Der eingegebene Hostname wird gegen die DNS Black Listen überprüft." );
define( "HOST2", "Bitte geben Sie einen Hostnamen oder eine IP-Adresse ein." );
define( "HOSTFAIL1", "Die Eingabe ist ungültig." );
define( "HOSTFAIL2", "Bitte geben Sie einen Hostnamen oder eine IP-Adresse ein." );
define( "HOSTNAMEFAIL1", "Keine IP-Adresse für den angegebenen Hostnamen gefunden!" );
define( "HOSTNAMEFAIL2", "Bitte geben Sie einen Hostnamen ein, der zu einer IP-Adresse aufgelöst werden kann." );
define( "HOSTNAMEORIP", "Hostname oder IP-Adresse" );
define( "IPFAIL1", "Keinen Hostnamen für die angegebene IP-Adresse gefunden!" );
define( "IPFAIL2", "Bitte geben Sie eine IP-Adresse ein, die zu einem Hostnamen aufgelöst werden kann." );
define( "OK", "DNSBL Test starten" );
define( "OWNIP", "Eigene IP-Adresse bzw. Hostnamen überprüfen" );
define( "SECOND", "Sek." );
# Remote-DNS-Black-Lists
$dnsbls = array( "cbl.abuseat.org",
"dnsbl.ahbl.org",
"ircbl.ahbl.org",
"rhsbl.ahbl.org",
"tor.ahbl.org",
"virbl.dnsbl.bit.nl",
"intercept.datapacket.net",
"spamtrap.drbl.drand.net",
"dnsbl.dronebl.org",
# "list.dsbl.org",
# "multihop.dsbl.org",
# "unconfirmed.dsbl.org",
"blackholes.five-ten-sg.com",
"blacklist.hostkarma.com",
"dnsbl.inps.de",
"hostkarma.junkemailfilter.com",
"ix.dnsbl.manitu.net",
"no-more-funn.moensted.dk",
"combined.njabl.org",
"bhnc.njabl.org",
"dnsbl.njabl.org",
"rbl.orbitrbl.com",
"dnsbl.proxybl.org",
"dnsbl.sorbs.net",
"block.dnsbl.sorbs.net",
"dul.dnsbl.sorbs.net",
"escalations.dnsbl.sorbs.net",
"http.dnsbl.sorbs.net",
"misc.dnsbl.sorbs.net",
"safe.dnsbl.sorbs.net",
"smtp.dnsbl.sorbs.net",
"spam.dnsbl.sorbs.net",
"new.spam.dnsbl.sorbs.net",
"old.spam.dnsbl.sorbs.net",
"recent.spam.dnsbl.sorbs.net",
"socks.dnsbl.sorbs.net",
"web.dnsbl.sorbs.net",
"zombie.dnsbl.sorbs.net",
"rhsbl.sorbs.net",
"badconf.rhsbl.sorbs.net",
"nomail.rhsbl.sorbs.net",
"abuse.rfc-ignorant.org",
"bogusmx.rfc-ignorant.org",
"dsn.rfc-ignorant.org",
"postmaster.rfc-ignorant.org",
"whois.rfc-ignorant.org",
"db.rubl.ru",
"bl.spamcannibal.org",
"bl.spamcop.net",
"sbl.spamhaus.org",
"xbl.spamhaus.org",
"pbl.spamhaus.org",
"dyna.spamrats.com",
"noptr.spamrats.com",
"spam.spamrats.com",
"psbl.surriel.com",
"dnsbl-1.uceprotect.net",
"dnsbl-2.uceprotect.net",
"dnsbl-3.uceprotect.net",
"db.wpbl.info"
); # 57 Stück
# Variablen aufbereiten
if ( isset( $_POST['host'] ) ) { $host = $_POST['host']; } else { $host = ""; }
if ( isset( $_POST['ownip'] ) ) { $host = $_SERVER['REMOTE_ADDR']; }
if ( preg_match( "/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/", $host ) ) {
$ip = $host;
$hostname = gethost( $ip );
} elseif ( preg_match( "/[A-Z0-9-.]+\.[A-Z]{2,3}/i", $host ) ) {
$hostname = $host;
$ip = gethost( $hostname );
} else {
$ip = "";
$hostname = "";
}
# Programmablauf
if ( $ip == "" && $hostname == "" ) {
if ( $host == "" ) {
form_host( HOST1, HOST2 );
} else {
form_host( HOSTFAIL1, HOSTFAIL2 );
}
} elseif ( $ip == "" ) {
form_host( HOSTNAMEFAIL1, HOSTNAMEFAIL2 );
# } elseif ( $hostname == "" ) {
# form_host( IPFAIL1, IPFAIL2 );
} else {
form_dnsbltest( DNSBLTEST1, DNSBLTEST2 );
}
####################################################################################################
function form_host( $msg1, $msg2 )
{
global $host;
?>
<h1><?php echo HOST; ?></h1><br />
<?php if ( isset( $msg1 ) ) { echo $msg1."<br /><br />"; } ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset style="border:1px solid #666666;">
<legend> <?php echo HOST; ?> </legend>
<table cellpadding="2" style="margin:10px;">
<colgroup>
<col width="200px;" />
</colgroup>
<tr>
<td align="right"><label for="host" style="cursor:pointer; margin-right:10px;"><?php echo HOSTNAMEORIP ?>:</label></td>
<td><input id="host" type="text" name="host" value="<?php echo htmlspecialchars( $host ); ?>" default /></td>
</tr>
<tr>
<td></td>
<td><?php if ( isset( $msg2 ) ) { echo "<br />".$msg2."<br /><br />"; } else { echo "<br />"; } ?></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="hostok" value="<?php echo OK; ?>" default /></td>
</tr>
<tr>
<td>
<br />
</td>
<td></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="ownip" value="<?php echo OWNIP; ?>" /></td>
</tr>
<tr>
<td></td>
<td><?php echo htmlspecialchars( " ".$_SERVER['REMOTE_ADDR']." / ".gethost( $_SERVER['REMOTE_ADDR'] ) ); ?></td>
</tr>
</table>
</fieldset>
</form>
<?php
}
function form_dnsbltest( $msg1, $msg2 )
{
global $dnsbls;
global $ip;
global $hostname;
?>
<h1><?php echo DNSBLTEST; ?></h1><br />
<?php if ( isset( $msg1 ) ) { echo $msg1."<br /><br />"; } ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset style="border:1px solid #666666;">
<legend> <?php echo DNSBLTEST; ?> </legend>
<table style="margin:10px;">
<colgroup>
<col width="200px;" />
</colgroup>
<tr>
<td align="right"><a style="margin-right:5px;">IP-Adresse:</a></td>
<td><b style="margin-left:5px;"><?php echo htmlspecialchars( $ip ); ?></b></td>
</tr>
<tr>
<td align="right"><label style="margin-right:5px;">Hostname:</label></td>
<td><b style="margin-left:5px;"><?php echo htmlspecialchars( $hostname ); ?></b></td>
</tr>
<tr>
<td><br /></td>
<td></td>
</tr>
<tbody style="line-height:1em;">
<?php foreach( $dnsbls as $dnsbl ) { ?>
<tr style="background-color:#cccccc;">
<td align="right" valign="top" style="padding:5px;"><label><a href="http://www.<?php $dnsblarr = explode( ".", $dnsbl ); end( $dnsblarr ); echo prev( $dnsblarr ).".".end( $dnsblarr ); ?>/" rel="external"><?php echo $dnsbl; ?></a></label></td>
<td style="padding:5px;"><table cellpadding="0" cellspacing="0" width="100%"><tr><td width="50%"><?php $dnsbltest = dnsbltest( $ip, $dnsbl ); echo "<b>".$dnsbltest[0]."</b></td><td align=\"right\" width=\"50%\"><span style=\"color:#ffffff; font-size:0.8em;\">".$dnsbltest[2]." ".SECOND."</span></td></tr></table>"; if ( $dnsbltest != "–" ) { if ( $dnsbltest[1] != "" ) { echo "<span style=\"font-size:0.8em;\">".$dnsbltest[1]."</span>"; } } ?></td>
</tr>
<?php } ?>
</tbody>
<tr>
<td></td>
<td><?php if ( isset( $msg2 ) ) { echo "<br />".$msg2."<br /><br />"; } else { echo "<br />"; } ?></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="back" value="<?php echo BACK; ?>" /></td>
</tr>
<!-- <tr>
<td></td>
<?php
$dnsblresult[] = "Erste Zeile";
$dnsblresult[] = "Zweite Zeile";
?>
<td><a href="mailto:?subject=DNSBL Test Ergebnis&body=<?php echo htmlentities( implode( "\r\n", $dnsblresult ) ); ?>">Als E-Mail versenden</a></td>
</tr>
--> </table>
</fieldset>
</form>
<?php
}
####################################################################################################
function gethost( $query )
{
$result = trim( end( explode( " ", `host $query|head -n1` ) ) );
if ( substr( $result, 1, 1 ) == "(" ) { $result = ""; }
return $result;
}
function dnsbltest( $ip, $dnsbl )
{
$time0 = microtime( true );
$iparr = explode( ".", $ip );
$rip = $iparr[3].".".$iparr[2].".".$iparr[1].".".$iparr[0].".".$dnsbl;
$result1 = trim( end( explode( " ", `dig $rip +short` ) ) );
$time1 = microtime( true );
$result2 = "";
if( $result1 == "" ) {
$result1 = "<span style=\"color:green;\">–</span>";
} else {
$result1 = "<span style=\"color:red;\">".htmlspecialchars( $result1 )."</span>";
$result2 = htmlspecialchars( trim( str_replace( "\"", "", `dig $rip txt +short` ) ) );
$time2 = microtime( true );
}
if( $result2 == "" ) {
$result3 = substr( $time1 - $time0, 0, 4 );
} else {
$result3 = substr( $time1 - $time0, 0, 4 )."/".substr( $time2 - $time1, 0, 4 );
}
return array( $result1, $result2, $result3 );
}
####################################################################################################
?><br />
Ulrich
PS
Ich habe es hier unter Plesk gepostet, weil ich es als Erweiterung im weiteren Sinne verstehe. Oder gibt es einen besseren Platz, an dem es auch genügend Aufmerksamkeit bekommt?
Last edited by a moderator: