Forum Discussion
mohammed_darwee
Nimbostratus
Mar 14, 2010Irule need to replace FQDN in SMTP traffic EHLO Message
Hi All,
I need an iRule to fix the below issue please,
The issue is:
For the traffic coming from external servers i.e. Foreign MMSC towards the MM3/4 Inbound traff...
Nat_Thirasuttakorn
Employee
Aug 25, 2011Hi Mohamed,
I think you can use something like this...
when SERVER_CONNECTED {
clientside { TCP::collect }
}
when CLIENT_DATA {
set p [string tolower [TCP::payload]]
if { $p starts_with "rcpt to:" } {
put you condition here, for example, only apply if there is @example
if { $p contains "@example>" } {
use stream profile or string manipulation or regexp here...
}
TCP::release
} else {
something else, let it be released to server
TCP::release
TCP::collect
}
}
Hi Jon,
Try this...
Nat
when CLIENT_ACCEPTED {
set chelo ""
set cfrom ""
set crcpt ""
TCP::respond "220\r\n"
log local0. "client accepted"
TCP::collect
}
when CLIENT_DATA {
log local0. "payload: [TCP::payload]"
set cdata [TCP::payload]
if { [ string length $cdata ] <= 0 } {
TCP::collect
return
}
if { not ( $cdata contains "\r\n" ) } {
log local0. "get <$cdata> so far"
TCP::collect
return
}
if { $cdata starts_with "HELO" || $cdata starts_with "EHLO" } {
set chelo [TCP::payload]
log local0. "get helo \[$cdata\]"
TCP::respond "250 OK\r\n"
TCP::payload replace 0 [string length $chelo] ""
TCP::collect
return
}
if { $cdata starts_with "MAIL FROM:" } {
set cfrom [TCP::payload]
log local0. "get from \[$cfrom\]"
TCP::respond "250 OK\r\n"
TCP::payload replace 0 [string length $cfrom] ""
TCP::collect
return
}
if { $cdata starts_with "RCPT TO:" } {
set crcpt "$crcpt[TCP::payload]"
log local0. "get rcpt \[$crcpt\]"
TCP::respond "250 OK\r\n"
TCP::payload replace 0 [string length [TCP::payload]] ""
TCP::collect
return
}
if { $cdata starts_with "DATA" } {
log local0. "get data \[$cdata\]"
TCP::payload replace 0 0 $chelo$cfrom$crcpt
}
TCP::release
TCP::collect
}
when SERVER_CONNECTED {
log "server connected"
TCP::collect
}
when SERVER_DATA {
log local0. "payload: [TCP::payload]"
set sdata [TCP::payload]
if { $sdata contains "\r\n354 " ||
$sdata starts_with "354 " ||
$sdata contains "354\r\n" } {
log local0. "get resp \[$sdata\]"
TCP::payload replace 0 [string length $sdata] "354 go ahead\r\n"
TCP::release
} else {
TCP::collect
}
}
when CLIENT_CLOSED {
log local0. "client closed"
}
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects