I added a syslog alert transport, and that does receive alerts.
Looking through old posts, I think my issue looks similar to this other issue by @stefaned
-bash-4.2$ ./scripts/test-alert.php -r14 -h 117 -d
SQL[SELECT alert_log.id,alert_log.rule_id,alert_log.device_id,alert_log.state,alert_log.details,alert_log.time_logged,alert_rules.rule,alert_rules.severity,alert_rules.extra,alert_rules.name FROM alert_log,alert_rules WHERE alert_log.rule_id = alert_rules.id && alert_log.device_id = '117' && alert_log.rule_id = '14' && alert_rules.disabled = 0 ORDER BY alert_log.id DESC LIMIT 1]
SQL[SELECT attrib_value FROM devices_attribs WHERE attrib_type = "disable_notify" && device_id = '117']
SQL[]
SQL[SELECT hostname, sysName, sysDescr, hardware, version, location, purpose, notes, uptime FROM devices WHERE device_id = '117']
SQL[SELECT `template`,`title`,`title_rec` FROM `alert_templates` JOIN `alert_template_map` ON `alert_template_map`.`alert_templates_id`=`alert_templates`.`id` WHERE `alert_template_map`.`alert_rule_id`='14']
SQL[SELECT `template`,`title`,`title_rec` FROM `alert_templates` WHERE `name`='Default Alert Template']
SQL[SELECT alert_log.id,alert_log.time_logged,alert_log.details FROM alert_log WHERE alert_log.state != 2 && alert_log.state != 0 && alert_log.rule_id = '14' && alert_log.device_id = '117' && alert_log.id < '6213' ORDER BY id DESC LIMIT 1]
Issuing Alert-UID #6213/0: ; ; mail => ERROR: You must provide at least one recipient email address.
SQL[SELECT * FROM `devices` WHERE `device_id` = '117']
SQL[SELECT * FROM devices_attribs WHERE `device_id` = '117']
SQL[SELECT * FROM `vrf_lite_cisco` WHERE `device_id` = '117']
SQL[INSERT INTO `eventlog` (`host`,`device_id`,`reference`,`type`,`datetime`,`severity`,`message`,`username`) VALUES ('117','117','NULL','error',NOW(),'5','Could not issue recovery for rule \'ssh daemon is not running\' to transport \'mail\' Error: You must provide at least one recipient email address.','')]
; ; ; ; ; ; ; ; ; ; ; ; syslog => SQL[INSERT INTO `eventlog` (`host`,`device_id`,`reference`,`type`,`datetime`,`severity`,`message`,`username`) VALUES ('117','117','NULL','poller',NOW(),'5','Syslog facility is not an integer: ','')]
OKSQL[INSERT INTO `eventlog` (`host`,`device_id`,`reference`,`type`,`datetime`,`severity`,`message`,`username`) VALUES ('117','117','NULL','alert',NOW(),'1','Issued recovery for rule \'ssh daemon is not running\' to transport \'syslog\'','')]