A couple of ways come to mind. Both delete the cases that are not wanted from the output of the permutation generator.
aa = {a, b, c, d, e};
p1 = DeleteCases[
Tuples[{aa, aa, aa}], {___, c, ___, a, ___} | {___, b, ___, b, ___}];
bb = {a, a, a, b, c, c, c, d, d, d, e, e, e};
p2 = DeleteCases[Permutations[bb, {3}], {___, c, ___, a, ___}];
p1 and p2 are the same list.