Forums:
Salu2, estoy tratando de abrir el puerto 25 en iptables en una maquina q corre una pequeña aplicacion en la cual a traves de un formulario envio solicitudes a traves de un formulario web, desde el cual apunto a un mailserver (ip 192.168.0.4), la regla q pongo en mi iptables es:
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
y el codigo php es el siguiente
<? require("class.phpmailer.php");
class my_phpmailer extends phpmailer {
// Set default variables for all new objects
var $From = "info@domain.algo";
var $FromName = "Mailer";
var $Host = "192.168.0.4";
var $Mailer = "smtp"; // Alternative to IsSMTP()
var $WordWrap = 75;
var $Port = 25 ;
// Replace the default error_handler
function error_handler($msg) {
print("Sitio - Error");
print("Description:");
printf("%s", $msg);
exit;
}
// Create an additional function
function do_something($something) {
// Place your new code here
}
}
?>
el lio es q no se envian los mails respectivos, pero si bajo el firewall pues se envian correctamente, a ver si alguien me da una mano por favor
Talvez si cambias el --sport
Talvez si cambias el --sport 25 por --dport 25 creo que podrías solucionarlo.
Saludos,
sorry he copiado mal
sorry he copiado mal es:
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
osea bien pero no funca
Como tienes política de
Como tienes política de DROP, también tienes que añadir la regla de INPUT que corresponde a esas conexiones (INPUT, --sport 25, -s ip.del.mail.server).
pero input para q ?? si los
pero input para q ?? si los users unicamente a traves del formulario envian mails, no entiendo
La regla de output deja
La regla de output deja pasar el paquete de syn que se origina en tu webserver. El mailserver responde con un syn/ack para establecer la conexión tcp (recuerda que son dos vías) y finalmente el webserver contesta con un ack, lo que concluye el establecimiento de la conexión. Solo después puedes hablar la primera frase de smtp.
Sin la regla de input que permita pasar al segundo paquete que viene del mailserver a tu webserver la conexión no se puede establecer y por ende, tampoco la sesión smtp.
Efectivamente coloque la
Efectivamente coloque la regla:
iptables -A INPUT -p tcp --sport 25 -s 192.168.0.4 -j ACCEPT
y ha funcionado correctamente.. todo
thnx ACL como siempre buenazo!
No hay de qué. Una
No hay de qué. Una alternativa a la regla de INPUT -s webserver --sport 25 es que tu primera regla en INPUT tenga -m state --state RELATED,ESTABLISHED para que los paquetes relacionados (como el syn/ack que necesitabas permitir) puedan pasar. Es un poco mejor porque restringe por ejemplo intentos de conexión (syn) a tus puertos en el webserver, lo cual no tiene esa regla de INPUT que indiqué arriba.
Sip tienes razon asi
Sip tienes razon asi quedaria
iptables -A INPUT -s 192.168.0.4 --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT
muchcas gracias x tu ayuda!
Me olvide de indicar q por
Me olvide de indicar q por default tengo las politicas de drop en mi script shell de firewall
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## politica por defecto: DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
En qué máquina está el firewall?
[quote]
la regla q pongo en mi iptables es:
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
[/quote]
¿Esta regla está en el webserver o en el mailserver? Si está en el webserver, no debería ser --sport 25 sino --dport 25. Si está en el mailserver, no debería ser OUTPUT sino INPUT y --dport 25.
Prueba abrir las conexiones manualmente primero. Cuando ya lo tengas, prueba con el script.
Páginas