. Nimmt jede Mail an und schreibt "MAIL " ins Log. $port = (int) ($argv[1] ?? 0); $log = (string) ($argv[2] ?? ''); $srv = stream_socket_server("tcp://127.0.0.1:$port", $errno, $errstr); if (!$srv) { fwrite(STDERR, "Server nicht gestartet: $errstr\n"); exit(1); } file_put_contents($log, "READY\n", FILE_APPEND); while ($c = @stream_socket_accept($srv, 120)) { stream_set_timeout($c, 10); fwrite($c, "220 test ESMTP\r\n"); $to = ''; $data = false; while (($line = fgets($c)) !== false) { $l = rtrim($line, "\r\n"); if ($data) { if ($l === '.') { $data = false; file_put_contents($log, "MAIL $to\n", FILE_APPEND); fwrite($c, "250 queued\r\n"); } continue; } $u = strtoupper($l); if (str_starts_with($u, 'EHLO')) fwrite($c, "250 test\r\n"); elseif (str_starts_with($u, 'RCPT TO:')) { $to = trim(substr($l, 8), ' <>'); fwrite($c, "250 ok\r\n"); } elseif ($u === 'DATA') { $data = true; fwrite($c, "354 go\r\n"); } elseif ($u === 'QUIT') { fwrite($c, "221 bye\r\n"); break; } else fwrite($c, "250 ok\r\n"); } fclose($c); }