You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Princeton/pu/libexec/check_imap_pu

57 lines
1.2 KiB
Plaintext

#!/usr/bin/expect
proc critical { mesg } {
puts "CRITICAL: $mesg"
exit 2
}
proc unknown { mesg } {
puts "UNKNOWN: $mesg"
exit 3
}
if { $argc < 4 } {
unknown "Usage: $argv0 <host> <netid> <passwd> <timeout>"
}
set host [lindex $argv 0]
set netid [lindex $argv 1]
set pwd [lindex $argv 2]
set timeout [lindex $argv 3]
log_user 0
set stty_init "-echo"
spawn -noecho openssl s_client -crlf -quiet -connect $host:993
expect "OK*\r\n" { } \
"connect:err" { critical "Unable to establish connection with IMAP server" } \
timeout { critical "No response while connecting to server" }
# puts $expect_out(buffer)
send "a1 login $netid $pwd\r"
expect "a1*OK*\r\n" { } \
"*NO*\r\n" { critical "Login failed" } \
"BAD" { unknown "Script error on login" } \
timeout { critical "No response from server when logging in" }
# puts $expect_out(buffer)
send "a2 select inbox\r"
expect "a2*OK*\r\n" { } \
"*NO*\r\n" { critical "Unable to select INBOX" } \
"BAD" { unknown "Script error on inbox select" } \
timeout { critical "No response from server when selecting inbox" }
# puts $expect_out(buffer)
send "a3 logout\r"
expect "a3*\r\n"
# puts $expect_out(buffer)
close
puts "OK: IMAP login successful"
exit 0