Exploiting Causal Chains for Domain Generalization