Skip to content

Instantly share code, notes, and snippets.

@serweb-labs
Last active October 28, 2015 14:52
Show Gist options
  • Save serweb-labs/f6a6327de52b0c850ea2 to your computer and use it in GitHub Desktop.
Save serweb-labs/f6a6327de52b0c850ea2 to your computer and use it in GitHub Desktop.
generar dkim asistente
#!/usr/bin/php
<?php
if (!is_dir("/etc/opendkim")) {
$salida = shell_exec("mkdir /etc/opendkim");
echo " - creando directorio /etc/opendkim" . "\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
if (!is_dir("/etc/opendkim/keys")) {
$salida = shell_exec("mkdir /etc/opendkim/keys");
echo " - creando directorio /etc/opendkim/keys/" . "\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
if (!is_dir("/etc/opendkim/keys/" . $argv[1])) {
$salida = shell_exec("mkdir /etc/opendkim/keys/" . $argv[1]);
echo " - creando directorio /etc/opendkim/keys/" . $argv[1] . "\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
$salida = shell_exec("opendkim-genkey -D /etc/opendkim/keys/" . $argv[1] . "/ -d " . $argv[1] . " -s default");
echo " - generando llaves dkim\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
$salida = shell_exec("chown -R opendkim: /etc/opendkim/keys/" . $argv[1]);
echo " - asignando dueño\n\n";
echo $salida;
if (!file_exists("/etc/opendkim/keys/" . $argv[1] . "/default.private")) {
$salida = shell_exec("mv /etc/opendkim/keys/" . $argv[1] . "/default.private /etc/opendkim/keys/" . $argv[1] . "/default");
echo " - renombrando archivo\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
if (!file_exists("/etc/opendkim/SigningTable")) {
$salida = shell_exec("touch /etc/opendkim/SigningTable");
echo " - creando SigningTable\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
$fichero = file_get_contents('/etc/opendkim/SigningTable', false);
$cadena = "*@" . $argv[1] . " default._domainkey." . $argv[1];
$posicion_coincidencia = strpos($fichero, $cadena);
if ($posicion_coincidencia === false) {
file_put_contents('/etc/opendkim/SigningTable', "\n" . $cadena, FILE_APPEND);
echo " - escribiendo entrada en SigningTable\n\n";
} else {
echo " - la entrada ya existe en SigningTable\n\n";
}
// trusted hosts
if (!file_exists("/etc/opendkim/TrustedHosts")) {
$salida = shell_exec("touch /etc/opendkim/TrustedHosts");
echo " - creando TrustedHosts\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
$ficheroTrustedHosts = file_get_contents('/etc/opendkim/TrustedHosts', false);
// localhost in trusted hosts
$cadena = "localhost";
$posicion_coincidencia = strpos($ficheroTrustedHosts, $cadena);
if ($posicion_coincidencia === false) {
file_put_contents('/etc/opendkim/TrustedHosts', "\n" . $cadena, FILE_APPEND);
echo " - escribiendo entrada <localhost> en TrustedHosts\n\n";
} else {
echo " - la entrada <localhost> ya existe en TrustedHosts\n\n";
}
// 127.0.0.1 in trusted hosts
$cadena = "127.0.0.1";
$posicion_coincidencia = strpos($ficheroTrustedHosts, $cadena);
if ($posicion_coincidencia === false) {
file_put_contents('/etc/opendkim/TrustedHosts', "\n" . $cadena, FILE_APPEND);
echo " - escribiendo entrada <127.0.0.1> en TrustedHosts\n\n";
} else {
echo " - la entrada <127.0.0.1> ya existe en TrustedHosts\n\n";
}
// domain in trusted hosts
$cadena = $argv[1];
$posicion_coincidencia = strpos($ficheroTrustedHosts, $cadena);
if ($posicion_coincidencia === false) {
file_put_contents('/etc/opendkim/TrustedHosts', "\n" . $cadena, FILE_APPEND);
echo " - escribiendo entrada <" . $argv[1] . "> en TrustedHosts\n\n";
} else {
echo " - la entrada ya existe <" . $argv[1] . "> en TrustedHosts\n\n";
}
// public ip in trusted hosts
if (!empty($argv[2])) {
$cadena = $argv[2];
} else {
echo " - no pasaste tu ip publica como argumento, intentaremos averiguar\n\n";
$cadena = shell_exec("curl ifconfig.host");
$cadena = trim($cadena);
echo "\n\n";
}
if (!empty($cadena) && (filter_var($cadena, FILTER_VALIDATE_IP))) {
$posicion_coincidencia = strpos($ficheroTrustedHosts, $cadena);
if ($posicion_coincidencia === false) {
file_put_contents('/etc/opendkim/TrustedHosts', "\n" . $cadena, FILE_APPEND);
echo " - escribiendo entrada para la ip {$cadena} en TrustedHosts\n\n";
} else {
echo " - la entrada para la ip {$cadena} ya existe en TrustedHosts\n\n";
}
} else {
echo " - error al averiguar tu ip, pasala como segundo parametro y vuelve a intentarlo\n\n";
exit();
}
echo " - se ha configurado dkim para {$argv[1]}\n\n";
if (file_exists("/etc/opendkim/keys/" . $argv[1] . "/default.txt")) {
$salida = file_get_contents("/etc/opendkim/keys/" . $argv[1] . "/default.txt");
echo " - ahora agrega la entrada al dns:\n\n";
echo !empty($salida) ? $salida . "\n\n" : "" ;
}
echo " - para sentora y zpanel agrega un registro del tipo txt, tiene que quedar así:\n\n";
$vowels = array("DKIM key default for {$argv[1]}", " ", " ", "\"", "\n", "-", "(", ")");
$parasentora = str_replace($vowels, "", $salida);
$parasentora = str_replace("INTXT", " 3600 IN TXT ", $parasentora);
$parasentora = str_replace(";k", "; k", $parasentora);
$parasentora = str_replace(";p", "; p", $parasentora);
echo trim($parasentora, " \t\n\r\0\x0B;") . "\n\n";
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment