diff --git a/plugins/check_relay b/plugins/check_relay
index a1f3d1e..db9c1cb 100644
--- a/plugins/check_relay
+++ b/plugins/check_relay
@@ -22,7 +22,19 @@ sub check_relay {
   $host = $self->qp->config("me")
     if ($host eq "" && (lc $user eq "postmaster" || lc $user eq "abuse"));
 
+  # Check if this IP is allowed to relay
   return (OK) if exists $ENV{RELAYCLIENT};
+  my @relay_clients = $self->qp->config("relayclients");
+  my $more_relay_clients = $self->qp->config("morerelayclients", "map");
+  my %relay_clients = map { $_ => 1 } @relay_clients;
+  my $client_ip = $self->qp->connection->remote_ip;
+  while ($client_ip) {
+    return (OK) if exists $relay_clients{$client_ip};
+    return (OK) if exists $more_relay_clients->{$client_ip};
+    $client_ip =~ s/\d+\.?$//; # strip off another 8 bits
+  }
+  
+  # Check if this recipient host is allowed
   for my $allowed (@rcpt_hosts) {
     $allowed =~ s/^\s*(\S+)/$1/;
     return (OK) if $host eq lc $allowed;