The Marlins said the agreement, reportedly worth $21 million, was official Friday.
Saltalamacchia, 28, had played the last four seasons with the Red Sox. He hit .273 with 14 home runs and 65 runs batted in over 121 games last season.
He broke into the major leagues in 2007 with Atlanta and also played for the Texas Rangers before being traded to the Red Sox in 2010. He became a free agent after the 2013 season.
Over his seven-year career, Saltalamacchia has hit .246 with 78 home runs and 275 RBI.