Under terms of the deal, Smith will get $7 million next season and $8 million in 2019.
The 33-year-old Smith was 3-0 with a 3.33 ERA in 59 appearances combined this season for the Toronto Blue Jays and Cleveland Indians. He returned to Cleveland in a midseason trade with the Blue Jays after pitching for the Indians from 2009 to 2013.
Smith has been one of baseball's most consistent relievers over the course of his 11-year career, never finishing a season with an ERA higher than 3.83. He spent the first two seasons of his major league career with the New York Mets after his third-round selection in the 2006 amateur draft. He has also pitched for the Los Angeles Angels and Chicago Cubs.
Smith's best season was 2014, when he was 7-2 with 15 saves and a 1.81 ERA in 76 games.
His deal was announced Wednesday at the winter meetings, and Houston said Smith will be introduced at a news conference Thursday at Minute Maid Park.